Python Dict在Dict中,按嵌套键对字典排序

Python Dict在Dict中,按嵌套键对字典排序,python,sorting,dictionary,nested,key,Python,Sorting,Dictionary,Nested,Key,我想按嵌套dict键0的相反顺序对词典排序: mydict = { 'key1': {0: 3, 1: ["doc1.txt", "doc2.txt"], 2: ["text1", "text2"]}, 'key2': {0: 8, 1: ["doc6.txt", "doc7.txt"], 2: ["text3", "text4"]}, 'key3': {0: 1, 1: ["doc8.txt", "doc9.txt"], 2: ["t

我想按嵌套dict键0的相反顺序对词典排序:

mydict = {
          'key1': {0: 3, 1: ["doc1.txt", "doc2.txt"], 2: ["text1", "text2"]},
          'key2': {0: 8, 1: ["doc6.txt", "doc7.txt"], 2: ["text3", "text4"]},
          'key3': {0: 1, 1: ["doc8.txt", "doc9.txt"], 2: ["text7", "text8"]},
}
要获得此订单:

'key3': {0: 1, 1: ['doc8.txt', 'doc9.txt'], 2: ['text7', 'text8']}
'key1': {0: 3, 1: ['doc1.txt', 'doc2.txt'], 2: ['text1', 'text2']}
'key2': {0: 8, 1: ['doc6.txt', 'doc7.txt'], 2: ['text3', 'text4']}
我试过:

import operator

sorted_dict = sorted(mydict.items(), key=operator.itemgetter(0), reverse=True)

但是没有成功。

你很接近,但是我建议使用
lambda
函数,它从字典中为每个项目提取索引1中的相关值

sorted_dict = sorted(mydict.items(), key=lambda x: x[1][0])
将输出打印成便于观察订单输出的格式

for item in sorted_dict:
    print(item)
哪些输出

('key3', {0: 1, 1: ['doc8.txt', 'doc9.txt'], 2: ['text7', 'text8']})
('key1', {0: 3, 1: ['doc1.txt', 'doc2.txt'], 2: ['text1', 'text2']})
('key2', {0: 8, 1: ['doc6.txt', 'doc7.txt'], 2: ['text3', 'text4']})
而不是:

sorted_dict = sorted(mydict.items(), key=operator.itemgetter(0), reverse=True)
你应使用:

sorted_dict = sorted(mydict.items(), key=operator.itemgetter(1))

它会把字典整理得令你满意

词典在Python中是无序的,除非您使用
collections.OrderedDict
,否则必须将结构转换为元组并应用
sorted
函数

my_dict = mydict.items()

final = sorted([(a, b.items()) for a, b in my_dict], key=lambda x:x[1][0][1])
输出:

[('key3', [(0, 1), (1, ['doc8.txt', 'doc9.txt']), (2, ['text7', 'text8'])]), 
 ('key1', [(0, 3), (1, ['doc1.txt', 'doc2.txt']), (2, ['text1', 'text2'])]), 
 ('key2', [(0, 8), (1, ['doc6.txt', 'doc7.txt']), (2, ['text3', 'text4'])])]

的可能副本将创建一个新的排序列表–在您的示例中,是一个表示字典项的元组列表。Python中的dict仍然是无序的。被视为实施细节,不应依赖。如果您需要一个有序的dict,请使用。这不清楚OP是想对字典中的项目进行排序,还是想对is字典中的项目进行排序并将其保存在字典结构中。如果前者是@IljaEverilä的建议最中肯,如果后者是,那么我的答案是。谢谢你的快速回答,这个排序方法保持了字典和dict类型的顺序。它与我的Jinja2模板完美配合,在结果中循环。干杯@JozsefTuri没问题:)