Python 筛选出嵌套列表中的空条目
所以我有一个列表L,我正在迭代试图过滤掉重复的列表。现在我知道这不是最好的方法,但它是专门要求的。我不会以重复的数据结束,但我会以重复的空列结束,我无法修复,有什么帮助吗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
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
可以互换,顺便说一句,我已经更新了我的解决方案。