Python对汇总的字典列表值进行排序

时间:2018-12-31 02:09:45

标签: python python-3.x list sorting dictionary

我无法将求和值从最高到最低排序。

字典的设置如下:

dictionary = {name:[dollar amount 1, dollar amount 2, etc.]}

我需要对美元金额求和并按降序打印结果(按美元金额总计)。

当前我使用这个:

for pair in dictionary:
    print(pair, f'{sum(dictionary[pair]):.2f}')

我不确定现在在哪里或如何进行排序,只是模糊地熟悉了lambda的用法。

谢谢!

2 个答案:

答案 0 :(得分:5)

您可以使用字典理解,然后进行sorted并通过for循环进行迭代:

from operator import itemgetter

# input dictionary; create new dictionary with values totalled
d = {'Joe': [5, 10, 15], 'Paul': [2, 5, 1], 'Andrew': [5, 20, 15]}
d_sums = {k: sum(v) for k, v in d.items()}

# sort by value descending and iterate, gives list of tuples
sums_sorted = sorted(d_sums.items(), key=itemgetter(1), reverse=True)

# iterate and print
for name, dollars in sums_sorted:
    print(f'{name} {dollars}')

# Andrew 40
# Joe 30
# Paul 8

答案 1 :(得分:0)

如果您只想使用lambda函数打印排序后的字典!

user = models.OneToOneField(User, on_delete=models.CASCADE)