python在列表中查找重复列表

2024-06-01 08:34:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Python2.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,将其他值连接起来

有什么建议吗??在

谢谢你 谨致问候


Tags: 列表建议listxxxxxyyy问候yx
2条回答

如果顺序无关紧要,我想你可以用口述:

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()

如果顺序很重要,您可以使用collections.OrderedDict。在

from collections import OrderedDict
lis =  [['a','x','y',2], ['b','xx','yy',2], ['c','xxx','yyy',3],['a','yx','yx',2]]
dic = OrderedDict()
for x in lis:
   key = (x[0],x[-1])
   if key not in dic:
      dic[key] = x[1:-1]
   else:
      val =  dic[key]
      dic[key] = [a+b for a,b in zip(val,x[1:-1])]

print [[k[0]] + v + [k[1]] for k,v in dic.items()]

输出:

^{pr2}$

相关问题 更多 >