gpt4 book ai didi

python - 如何对包含多个数值列表的字典进行排序?

转载 作者:行者123 更新时间:2023-12-01 02:23:00 25 4
gpt4 key购买 nike

我有一个字典,其数据结构如下:

d = {'TRANSFERRED': [2281, 1031, 1775, 867, 1242],
'CLOSED': [239, 269, 645, 540, 388],
'DEFERRED': [89, 5, 68, 48, 37],
'OPEN': [3, 0, 2, 1, 0],
'IN PROGRESS': [0, 2, 4, 0, 5],
'QUEUED': [0, 0, 0, 0, 0]}

字典包含带有数值的列表,我想将它们从最低值到最高值排序,如下所示:

d = {'TRANSFERRED': [867, 1031, 1242, 1775, 2281],
'CLOSED': [239, 269, 388, 540, 645],
'DEFERRED': [5, 37, 48, 68, 89],
'OPEN': [0, 0, 1, 2, 3],
'IN PROGRESS': [0, 0, 2, 4, 5],
'QUEUED': [0, 0, 0, 0, 0]}

我担心字典无法排序,因为它们本质上是无序的,但其他类型(例如列表和元组)不是无序的,此外,我一直在使用以下技巧来对包含单个项目的列表进行排序,例如:

d2 = {'TRANSFERRED': [-2281],
'CLOSED': [239],
'DEFERRED': [489],
'OPEN': [34],
'IN PROGRESS': [0],
'QUEUED': [-10]}
sorted(d2.items(), key=lambda x: x[1], reverse=True)

结果给出以下排序数据结构:

[('DEFERRED', [489]), 
('CLOSED', [239]),
('OPEN', [34]),
('IN PROGRESS', [0]),
('QUEUED', [-10]),
('TRANSFERRED', [-2281])]

我想复制相同的结果,但使用包含多个数值列表的字典。我怎样才能实现这个目标?请随时使用以下链接 repl.it - sort dictionary with lists of multiple items测试你的结果。欢迎提供反馈或意见来改进这个问题。

最佳答案

您可以使用dict.items():

d = {'TRANSFERRED': [2281, 1031, 1775, 867, 1242],
'CLOSED': [239, 269, 645, 540, 388],
'DEFERRED': [89, 5, 68, 48, 37],
'OPEN': [3, 0, 2, 1, 0],
'IN PROGRESS': [0, 2, 4, 0, 5],
'QUEUED': [0, 0, 0, 0, 0]}
new_d = {a:sorted(b) for a, b in d.items()}

输出:

{'IN PROGRESS': [0, 0, 2, 4, 5], 'TRANSFERRED': [867, 1031, 1242, 1775, 2281], 'DEFERRED': [5, 37, 48, 68, 89], 'CLOSED': [239, 269, 388, 540, 645], 'OPEN': [0, 0, 1, 2, 3], 'QUEUED': [0, 0, 0, 0, 0]}

关于python - 如何对包含多个数值列表的字典进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47760355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com