我正在使用python 2.7,并且尝试基于两个值在列表列表中查找重复的列表。例如list= [[a,x,y,2], [b,xx,yy,2], [c,xxx,yyy,3],[a,yx,yx,2]]outcome [[a,xyx,yyx,2], [b,xx,yy,2], [c,xxx,yyy,3]]因此,基于值a和2,将其他值合并有什么建议??
2 回答

长风秋雁
TA贡献1757条经验 获得超7个赞
我想如果顺序无关紧要,您可以使用dict:
from operator import itemgetter
getter = itemgetter(0,-1)
def merge(lst1,lst2):
return [lst1[0],lst1[1]+lst2[1],lst1[2]+lst2[2],lst1[3]]
d = {}
for sublist in lst:
t = getter(sublist)
if t not in d:
d[t] = sublist
else:
d[t] = merge(sublist,d[t])
print d.values()
如果顺序很重要,则可以改用a collections.OrderedDict。
添加回答
举报
0/150
提交
取消