如何通过重新排列第二层字典的键来排序多层字典?我认为一个例子是更好的呈现方式。
原始多层词典:
ManipulationMode.System
我正在尝试通过更改第一层字典来排列第二层字典,并同时将第二层键值对移动到一起。第二层字典键的顺序为{'John': {'Low >3 days': 3,'Low >1 day': 2,'High <1 day': 2,'High >3 days': 3,'Low <1 day': 1,'High >1 day': 1},'Mary': {'High >1 day': 5,'High >3 days': 1,'Low <1 day': 0, 'Low >1 day': 2, 'Low >3 days': 9, 'High <1 day': 5}}
预期输出如下:
High <1 day, Low <1 day, High >1 day, Low >1 day, High >3 days, Low >3 days.
答案 0 :(得分:0)
要实现这一目标,您需要OrderedDict
模块中的collections
。有关参考,请参阅此post。
答案 1 :(得分:0)
我认为你对字典是什么有一个根本的误解。排序字典的键是没有意义的,因为字典是无序的。密钥在字典中的位置/方式无关紧要。我认为你有两种选择。
如果您的密钥按特定顺序排除,则可以使用ordered dict。这将记住您将密钥插入字典的顺序。如果您已有当前的dict,可以使用以下代码将其转换为有序的dict。
from collections import OrderedDict
exDict = #... put your dict here
keyOrder = ['High <1 day', 'Low <1 day', 'High >1 day', 'Low >1 day', 'High >3 days', 'Low >3 days']
ordDict = OrderedDict()
for k in exDict.keys():
ordDict[k] = OrderedDict()
for kO in keyOrder:
ordDict[k][kO] = exDict[k][kO]
如果您尝试按特定顺序打印或访问信息,则应为要访问的键的顺序定义变量。就像我在上面定义keyorder
时所做的那样,你可以创建一个变量并循环遍历它以按特定顺序访问dict键。
另一个reference post。