希望能在新手问题上获得一些帮助。我想对一堆子列表进行排序,如果子列表中的任何项目出现两次,则删除它们,并将各自列表中的值合并到一个新的子列表中。
举个例子:
my_currentlist = [[A,B],[C,D],[B,E]]
my_desiredlist = [[A,E],[C,D]]
有什么想法吗?
我失败的尝试(对不起,对python来说是新手):
for i in range(len(items)):
j=i+1
for j in range(len(items)):
if items[i][0]==items[j][0]:
items.remove(items[i])
items.remove(items[j])
items.append([items[i][1], items[j][1]])
elif items[i][0]==items[j][1]:
items.remove(items[i])
items.remove(items[j])
items.append([items[i][1], items[j][0]])
elif items[i][1]==items[j][0]:
items.remove(items[i])
items.remove(items[j])
items.append([items[i][0], items[j][1]])
elif items[i][1]==items[j][1]:
items.remove(items[i])
items.remove(items[j])
items.append([items[i][0], items[j][0]])
答案 0 :(得分:0)
你需要一个双循环,第一个从列表中取一个元素(子列表),第二个用于检查子元素其余部分中元素的存在
这应该可以解决问题
>>> my_currentlist = [["A","B"],["C","D"],["B","E"]]
>>> my_desiredlist = []
>>> while my_currentlist:
a,b = my_currentlist.pop(0)
for i,temp in enumerate(my_currentlist):
if a in temp:
temp.remove(a)
a = temp[0]
my_currentlist.pop(i)
break
elif b in temp:
temp.remove(b)
b = temp[0]
my_currentlist.pop(i)
break
my_desiredlist.append( [a,b] )
>>> my_desiredlist
[['A', 'E'], ['C', 'D']]
>>>