如何在python中组合2个2D列表?

时间:2014-05-17 17:31:57

标签: python list

我对python很新,我有一点问题。

我需要像这样组合两个2D列表:

list1= [[some,1],[thing,5]]
list2= [[some,1],[other,1],[thing,5]]

结果应该是这样的:

result= [[some,2],[other,1],[thing,10]]

1 个答案:

答案 0 :(得分:4)

您可以使用collections.Counter

>>> from collections import Counter
>>>
>>> list1 = [['some',1],['thing',5]]
>>> list2= [['some',1],['other',1],['thing',5]]
>>>
>>> [[k,v] for k,v in (Counter(dict(list1)) + Counter(dict(list2))).items()]
[['thing', 10], ['other', 1], ['some', 2]]

或者如果可以接受元组列表:

>>> (Counter(dict(list1)) + Counter(dict(list2))).items()
[('thing', 10), ('other', 1), ('some', 2)]

使用元组似乎在这里更有意义。

您应该考虑是否确实需要将最终结果作为列表。如果顺序不重要(正如你所说的那样),那么字典Counter(dict(list1)) + Counter(dict(list2))可能就足够了。

>>> Counter(dict(list1)) + Counter(dict(list2))
Counter({'thing': 10, 'some': 2, 'other': 1})