我目前在Python3中有一个像这样的字典
{'parentkey1': {'value1': 3, 'value2': 0},
'parentkey2': {'value1': 2, 'value2': 5},
'parentkey3': {'value1': 6, 'value2': 9},
'parentkey4': {'value1': 8, 'value2': 3}
}
有没有一种方法可以安排它成为的嵌套字典
{'parentkey1': {'value2': 0, 'value1': 3},
'parentkey2': {'value1': 2, 'value2': 5},
'parentkey3': {'value1': 6, 'value2': 9},
'parentkey4': {'value2': 3, 'value1': 8}
}
你去。
data = {'parentkey1': {'value1': 3, 'value2': 0},
'parentkey2': {'value1': 2, 'value2': 5},
'parentkey3': {'value1': 6, 'value2': 9},
'parentkey4': {'value1': 8, 'value2': 3}
}
for key, value in data.items():
print(value)
print("\n")
for key, value in data.items():
new = {}
if value["value1"] >= value["value2"]:
new["value2"] = value["value2"]
new["value1"] = value["value1"]
else:
new["value1"] = value["value1"]
new["value2"] = value["value2"]
data[key] = new
for key, value in data.items():
print(value)
如果每个项目的value2> value1,只需切换值就可以做到
data = {'parentkey1': {'value1': 3, 'value2': 0},
'parentkey2': {'value1': 2, 'value2': 5},
'parentkey3': {'value1': 6, 'value2': 9},
'parentkey4': {'value1': 8, 'value2': 3}
}
for key, value in data.items():
if value['value1'] > value['value2']:
value['value1'], value['value2'] = value['value2'], value['value1']
由于python 3.6 dictionaries are insertion ordered,所以您可以使用:
d = {'parentkey1': {'value1': 3, 'value2': 0},
'parentkey2': {'value1': 2, 'value2': 5},
'parentkey3': {'value1': 6, 'value2': 9},
'parentkey4': {'value1': 8, 'value2': 3}
}
d = {k : dict(sorted(v.items(), key= lambda x: x[1])) for k, v in d.items()}
d
输出:
{'parentkey1': {'value2': 0, 'value1': 3},
'parentkey2': {'value1': 2, 'value2': 5},
'parentkey3': {'value1': 6, 'value2': 9},
'parentkey4': {'value2': 3, 'value1': 8}}
如果希望在其他Python实现中保证插入顺序,则可以使用OrderedDict