如何按值对多级字典进行排序?
How to sort multi-level dictionary by it's value?
如何按值对 python 多级字典进行排序?
test_dict = {'Items1':{'name':'Homer', 'age':39},'Items2':{'name':'Bart', 'age':10},'Items3':{'name':'Json','age':20}}
按'age'排序后,应该是
test_dict = {'Items2':{'name':'Bart', 'age':10},'Items3':{'name':'Json','age':20},'Items1':{'name':'Homer', 'age':39}}
对于给您带来的不便,我深表歉意。更正了问题。
首先,请注意常规 python 字典没有排序。要订购字典,您需要使用 OrderedDict
要回答您的问题,您可以使用对处理数据非常有用的 pandas
库,方法是将您的项目加载到 pandas,对它们进行排序,然后导出回有序字典
import pandas as pd
df = pd.DataFrame(test_dict)
result = df.sort_values(by='age', axis=1, ascending=True).apply(OrderedDict)
结果为
Items2 {u'age': 10, u'name': u'Bart'}
Items3 {u'age': 20, u'name': u'Json'}
Items1 {u'age': 39, u'name': u'Homer'}
您可以使用默认库和 sorted()
方法:
from collections import OrderedDict
test_dict = {
'Items1':{'name':'Homer', 'age':39},
'Items2':{'name':'Bart', 'age':10},
'Items3':{'name':'Json','age':20}
}
sorted_dict = OrderedDict()
sorted_keys = sorted(test_dict, key=lambda x: test_dict[x]["age"])
for key in sorted_keys:
sorted_dict[key] = test_dict[key]
print(sorted_dict)
输出:
OrderedDict([('Items2', {'age': 10, 'name': 'Bart'}), ('Items3', {'age': 20, 'name': 'Json'}), ('Items1', {'age': 39, 'name': 'Homer'})])
如何按值对 python 多级字典进行排序?
test_dict = {'Items1':{'name':'Homer', 'age':39},'Items2':{'name':'Bart', 'age':10},'Items3':{'name':'Json','age':20}}
按'age'排序后,应该是
test_dict = {'Items2':{'name':'Bart', 'age':10},'Items3':{'name':'Json','age':20},'Items1':{'name':'Homer', 'age':39}}
对于给您带来的不便,我深表歉意。更正了问题。
首先,请注意常规 python 字典没有排序。要订购字典,您需要使用 OrderedDict
要回答您的问题,您可以使用对处理数据非常有用的 pandas
库,方法是将您的项目加载到 pandas,对它们进行排序,然后导出回有序字典
import pandas as pd
df = pd.DataFrame(test_dict)
result = df.sort_values(by='age', axis=1, ascending=True).apply(OrderedDict)
结果为
Items2 {u'age': 10, u'name': u'Bart'}
Items3 {u'age': 20, u'name': u'Json'}
Items1 {u'age': 39, u'name': u'Homer'}
您可以使用默认库和 sorted()
方法:
from collections import OrderedDict
test_dict = {
'Items1':{'name':'Homer', 'age':39},
'Items2':{'name':'Bart', 'age':10},
'Items3':{'name':'Json','age':20}
}
sorted_dict = OrderedDict()
sorted_keys = sorted(test_dict, key=lambda x: test_dict[x]["age"])
for key in sorted_keys:
sorted_dict[key] = test_dict[key]
print(sorted_dict)
输出:
OrderedDict([('Items2', {'age': 10, 'name': 'Bart'}), ('Items3', {'age': 20, 'name': 'Json'}), ('Items1', {'age': 39, 'name': 'Homer'})])