簡體   English   中英

添加元組列表並對它們進行排序

[英]adding lists of tuples and sorting them

我有以下元組列表:

mylist=[('a', 3), ('b', 2), ('c', 8)]
mylist2=[('a', 3), ('b', 5), ('c', 20), ('d', 5)]

有沒有一種方法可以對所有共享相同名稱的值求和並將其在Python中排序? 就像是:

[('c', 28), ('b', 7), ('a', 6), ('d', 5)]

如果我是你,我會這樣做的:

>>> mylist=[('a', 3), ('b', 2), ('c', 8)]
>>> mylist2=[('a', 3), ('b', 5), ('c', 20), ('d', 5)]

# Step 1: Convert the list of tuples to `dict`
>>> dict_1, dict_2 = dict(mylist), dict(mylist2)

# Step 2: get set of all keys
>>> all_keys = set(dict_1.keys() + dict_2.keys())

# Step 3: Get `sum` of value for each key
>>> sum_list = [(k, dict_1.get(k, 0) + dict_2.get(k, 0)) for k in all_keys]

然后將列表排序為:

>>> from operator import itemgetter

# Step 4: Sort in descending order based on value at index 1
>>> sorted(sum_list, key=itemgetter(1), reverse=True)
[('c', 28), ('b', 7), ('a', 6), ('d', 5)]

注意:假定兩個列表的元組中第0個索引的都是唯一的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM