合并重复列表

问题描述

输入列表

[(1,3),'21:40:44',(1,3,9),4,6),'.273']
[(1,'21:43:37','.060']
[(1,'21:45:27','.410']

结果应为:

[(1,['21:40:44','21:45:27'],['.273','.060','.410']

目标是减少重复项,一列中的唯一元素应存储在列表中。

解决方法

如何使用zip。它将合并3个列表,并为您提供重复的输出。以后使用set删除重复项。并且由于您不希望仅对单个元素使用元组列表,请使用list(set(x))[0] if len(set(x))==1 else list(set(x))

a=[(1,3),'21:40:44',(1,3,9),4,6),'.273']
b=[(1,'21:43:37','.060']
c=[(1,'21:45:27','.410']
l=[list(set(x))[0] if len(set(x))==1 else list(set(x)) for x in list(zip(a,b,c))]
print(l)
>>>[(1,['21:45:27','21:43:37'],['.060','.273','.410']]
,

最简单的方法是:

in_data = [
[(1,'.273'],[(1,'.060'],'.410']
]
res = []
for i in range(len(in_data[0])):
    data = list(set([x[i] for x in in_data ]))
    data = data[0] if len(data) == 1 else data
    res.append(data)
print(res)
>>> [(1,['21:43:37','21:45:27'],['.273','.060','.410']]