Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 筛选出嵌套列表中的空条目_Python_List_Loops - Fatal编程技术网

Python 筛选出嵌套列表中的空条目

Python 筛选出嵌套列表中的空条目,python,list,loops,Python,List,Loops,所以我有一个列表L,我正在迭代试图过滤掉重复的列表。现在我知道这不是最好的方法,但它是专门要求的。我不会以重复的数据结束,但我会以重复的空列结束,我无法修复,有什么帮助吗 for x in range(len(L), 0, -1): x -= 1 #len() for y in range(len(L[0]), 0, -1): y -= 1 if y != 0 and y != 1: #Skiping Coloumns 0 and 1 check = L[x

所以我有一个列表L,我正在迭代试图过滤掉重复的列表。现在我知道这不是最好的方法,但它是专门要求的。我不会以重复的数据结束,但我会以重复的空列结束,我无法修复,有什么帮助吗

for x in range(len(L), 0, -1): 
x -= 1 #len() 
for y in range(len(L[0]), 0, -1):
    y -= 1 
    if y != 0 and y != 1: #Skiping Coloumns 0 and 1
        check = L[x][y]
        for x0 in range(len(L), 0, -1):
            x0 -= 1 
            for y0 in range(len(L[0]), 0, -1):
                y0 -= 1 
                if y0 == y:
                    checkagainst = L[x0][y0]
                    if check == checkagainst:
                        if x != x0: #If its on the same row, don't count bro
                            #print "Identical Indices:","X0:",x0,",","Y0:", y0,"|" ,"X:",x,",","Y:",y
                            #print L[x][y], "," , L[x0][y0]
                            WriteMe = True #Write to Not Duplicate file or not decider
                            if check == "": ##Didnt work
                                WriteMe = False
        print x, ",", y
if WriteMe == True:
    dwriter.writerow(L[x])
    WriteMe = False #Set to False for next iteration
else:
    writer.writerow(L[x])
L.pop(x)
print
样本输入:

ID, Sex, E-mail

1, M, lol@jk.com

2, F, 

3, F,

4, F, jack@jay.com
预期输出(无重复文件):

(在这种情况下,ID 2和ID 3是可互换的,因为它们是重复的行)

预期输出(重复文件):


您可以使用集合。OrderedDict:

>>> from collections import OrderedDict
with open('abc') as f:
    #next(f)       #skip header if present
    for line in f:
        data = map(str.strip, line.split(', '))
        idx, sex, mail = data if len(data) == 3 else data+['']
        dic.setdefault(mail,[]).append([idx,sex])
...     
非重复:

for k,v in dic.iteritems():
    print ", ".join((v[0][0],v[0][1],k))
...     
1, M, lol@jk.com
2, F, 
4, F, jack@jay.com
for k,v in dic.iteritems():
    if len(v) >1:
        for v1 in v[1:]:
            print ", ".join((v1[0],v1[1],k))
...             
3, F,, 
重复:

for k,v in dic.iteritems():
    print ", ".join((v[0][0],v[0][1],k))
...     
1, M, lol@jk.com
2, F, 
4, F, jack@jay.com
for k,v in dic.iteritems():
    if len(v) >1:
        for v1 in v[1:]:
            print ", ".join((v1[0],v1[1],k))
...             
3, F,, 

发布一个示例输入和预期输出。如果他们有相同的电子邮件,但性别不同,他们是否重复?@2rs2ts否我只是在筛选电子邮件。只要它们有不同的电子邮件地址,它们就不会重复。与所有那些将索引变为1的语句不同,只需调整
范围的界限即可。此外,缩进错误。如果只关心一列,请不要在列上循环。看看那个专栏,我想OP希望3在单独的文件中,而不是2。很容易检查dic中的邮件是否可以互换,如果可以,可以将其放入列表中。@2rs2ts OP说
id2
id3
可以互换,顺便说一句,我已经更新了我的解决方案。