【发布时间】:2023-04-05 19:56:01
【问题描述】:
我正在尝试对字典中的字典进行排序。我的目标是根据它的值从高到低对“子”字典 ['extra'] 进行排序。我遇到的问题是我的“子”字典嵌套在主字典的深处。使用其他示例,我可以将其提高一级,请参见下面的代码。因此,我不想对“标记”进行排序,而是根据它们的值对项目 1,2 和 3 进行排序。代码:
# initializing dictionary
test_dict = {'Nikhil' : { 'roll' : 24, 'marks' : 17, 'extra' : {'item1': 2, 'item2': 3, 'item3': 5}},
'Akshat' : {'roll' : 54, 'marks' : 12, 'extra' : {'item1': 8, 'item2': 3, 'item3': 4}},
'Akash' : { 'roll' : 12, 'marks' : 15, 'extra' : {'item1': 9, 'item2': 3, 'item3': 1}}}
# printing original dict
print("The original dictionary : " + str(test_dict))
# using sorted()
# Sort nested dictionary by key
res = sorted(test_dict.items(), key = lambda x: x[1]['marks'])
# print result
print("The sorted dictionary by marks is : " + str(res))
# How to sort on 'extra'?
所以这就是我想要的样子:
sorted_dict = {'Nikhil' : { 'roll' : 24, 'marks' : 17, 'extra' : {'item3': 5, 'item2': 3, 'item1': 2}},
'Akshat' : {'roll' : 54, 'marks' : 12, 'extra' : {'item1': 8, 'item3': 4, 'item2': 3}},
'Akash' : { 'roll' : 12, 'marks' : 15, 'extra' : {'item1': 9, 'item2': 3, 'item3': 1}}}
【问题讨论】:
-
虽然字典在最近的 Python 版本中仍按插入顺序排列,但最佳实践仍然是使用具有真实顺序的类型。考虑使用
collections.OrderedDict
的列表。 -
@KlausD。你有这方面的例子吗?
-
不,这是关于 sorted_dict 中项目 *item1、item2、item3) 的顺序:它们从大到小排序。 test-dict 的情况并非如此。问题是如何做到这一点。
-
等等...你不想改变
item1
、item2
、item3
出现的顺序,但是你想改变哪个值与它们相关联?那你为什么没有清单呢?喜欢'extra': [5, 3, 2]
? -
不,是关于订单的,然后看看与它关联的数字/值。我想查看键(item1/2/3)和它的关联值,但只是从大到小排序。在我的“真实”示例中,有时我有 item1 直到 ... item20,我希望首先拥有价值最大的那些,因为这些更相关
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在字典中对 Python 字典进行排序 - Python技术站