Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中对嵌套字典进行2次排序?_Python - Fatal编程技术网

如何在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])
}