排序嵌套字典

问题描述 投票:0回答:2

我有一本字典,我需要按

p
排序。 如果
a
相等,基于
w
,如果
w
相等,基于
name

result_sort={"iran":{"w":2,"l":1,"d":0,"g":-2,"p":3},
             "spain":{"w":0,"l":3,"d":1,"g":-5,"p":4},
             "morocco":{"w":2,"l":0,"d":1,"p":4}}

我尝试过的:

result_sort_p=sorted(result_sort.items(),key=lambada x:x[4])
python dictionary sorting lambda items
2个回答
0
投票

尝试向

key
提供正确的
sorted

>>> dict(sorted(result_sort.items(), key=lambda x: (x[1]["p"], x[1]["w"], x[0])))
{'iran': {'w': 2, 'l': 1, 'd': 0, 'g': -2, 'p': 3},
 'spain': {'w': 0, 'l': 3, 'd': 1, 'g': -5, 'p': 4},
 'morocco': {'w': 2, 'l': 0, 'd': 1, 'p': 4}}

0
投票
result_sort={"iran":{"w":2,"l":1,"d":0,"g":-2,"p":3},"spain":{"w":0,"l":3,"d":1,"g":-5,"p":4},"morocco":{"w":2,"l":0,"d":1,"p":4}}

sorted(result_sort.items(),key=lambda x:(x[1]['p'],x[1]['w'],x[0]))

#output
[('iran', {'w': 2, 'l': 1, 'd': 0, 'g': -2, 'p': 3}),
 ('spain', {'w': 0, 'l': 3, 'd': 1, 'g': -5, 'p': 4}),
 ('morocco', {'w': 2, 'l': 0, 'd': 1, 'p': 4})]
© www.soinside.com 2019 - 2024. All rights reserved.