如何在Python中对嵌套字典进行2次排序?
我有一本字典,它有另一本字典作为值。如何首先按键(升序)排序,然后按第二个字典的值(降序)排序 我想得到这个:如何在Python中对嵌套字典进行2次排序?,python,Python,我有一本字典,它有另一本字典作为值。如何首先按键(升序)排序,然后按第二个字典的值(降序)排序 我想得到这个: my_dict = {'A':{'contest_six':70, 'contest_five':60, 'contest_four':50} 'B':{'contest_two':50, 'contest_three':40, 'contest':30 }} 我尝试了这个my_dict=dict(排序的(my_dict.items(),key=lambda
my_dict = {'A':{'contest_six':70, 'contest_five':60, 'contest_four':50}
'B':{'contest_two':50, 'contest_three':40, 'contest':30 }}
我尝试了这个
my_dict=dict(排序的(my_dict.items(),key=lambda x:(x[0],x[1].values())
,但显然不起作用。可以对排序的键/值对使用嵌套的dict理解:
d = {k: {k2: v for k2, v in sorted(dic.items(), key=lambda x: x[1], reverse=True)} for k, dic in sorted(my_dict.items(), key=lambda x: x[0])}
看起来有点难看,但它确实起作用了您的设计中有一个焦点问题:您声称您只对一个dict进行排序,但所需的输出对所有三个dict进行排序:my_dict、my_dict['a']和my_dict['B']。您必须在两个级别上调用
sorted
:
d = {k: {k2: v for k2, v in sorted(dic.items(), key=lambda x: x[1], reverse=True)} for k, dic in sorted(my_dict.items(), key=lambda x: x[0])}
{letter: {contest: score
for contest, score in
sorted(sub_dict.items(), key=lambda val: val[1], reverse=True)
} for letter, sub_dict in sorted(my_dict.items(), key=lambda val: val[0])
}