添加元组列表并对其排序

2024-10-02 00:44:03 发布

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

我有以下元组列表:

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

Tags: 方法名称列表排序元组mylistmylist2
1条回答
网友
1楼 · 发布于 2024-10-02 00:44:03

如果我是你,我会这样做:

>>> 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个索引处的是唯一的

相关问题 更多 >

    热门问题