[英]Sort based Dictionary of Dictionary of Dictionary Values?
我有这样的字典
d = {
'Benefits': {
1: {
'BEN1': {
'D': [{'description': 'D1'}],
'C': [{'description': 'C1'}]
}
},
2: {
'BEN2': {
'D': [{'description': 'D2'}],
'C': [{'description': 'C2'}]
}
}
}
}
我正在尝试根据LAST VALUES(LIST)排序字典。
例如
我正在寻找第一个像'C'和第二个像'D'的字典值
我正在尝试获得正确的订单。 这是代码:
d1 = collections.OrderedDict(sorted(d.items()))
不幸的是没有得到正确的结果
这是我的预期输出
{'Benefits':
{1:
{'BEN1':
{'C':[{'description': 'C1'}], 'D': [{'description': 'D1'}]
}
},
2:
{'BEN2':
{'C': [{'description': 'C2'}], 'D': [{'description': 'D2'}]
}
}
}
}
我正在使用python 3.5。 我试图得到这样的订单
{'C':[{'description': 'C1'}], 'D': [{'description': 'D1'}]}
以下代码将按其关键字对任何字典进行排序,并根据其关键字递归对也是字典的任何字典值进行排序,并且不对要排序的字典的内容进行任何假设。 它使用OrderedDict
但是如果您可以确定它将始终在Python 3.6或更高版本上运行,则可以简单地更改为使用dict
。
from collections import OrderedDict
d = {
'Benefits': {
1: {
'BEN1': {
'D': [{'description': 'D1'}],
'C': [{'description': 'C1'}]
}
},
2: {
'BEN2': {
'D': [{'description': 'D2'}],
'C': [{'description': 'C2'}]
}
}
}
}
def sort_dict(d):
items = [[k, v] for k, v in sorted(d.items(), key=lambda x: x[0])]
for item in items:
if isinstance(item[1], dict):
item[1] = sort_dict(item[1])
return OrderedDict(items)
#return dict(items)
print(sort_dict(d))
d1 = collections.OrderedDict(sorted(d.items()))
这是行不通的,因为它仅在“ Benefits
项上排序。 在这里您要对内部项目进行排序,因此我们必须到达内部项目并对它们进行排序。
d1 = {'Benefits': {}}
for a_benefit in d['Benefits']:
d1['Benefits'][a_benefit] = {}
for a_ben in d['Benefits'][a_benefit]:
d1['Benefits'][a_benefit][a_ben] = dict(collections.OrderedDict(sorted(d['Benefits'][a_benefit][a_ben].items())))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.