ano*_*rer 5 python dictionary python-2.7
我要重新排列字典键的顺序时遇到了一个问题。我有一个具有的数组,env = [key1, key2, key3]然后在循环中,这些键从数组中获取并馈送到字典中。dict_result。dic_result以以下格式显示字典中这些env键的顺序(即使我未使用任何排序函数,也基于key1,key2、3名称的字母顺序):
{'name': {'key2': [val1, val2, val3], 'key1': [], 'key3': [val1, val2]},
'name1': {'key2': [val1, val2, val3], 'key1': [], 'key3': [val1, val2]},
...
}
for k in dict_result['name'].keys():
//performing checks
Run Code Online (Sandbox Code Playgroud)
我想将dict_result [name]的嵌套键顺序更改为:
{'name': {'key3': [val1, val2]}, 'key2': [],'key1': [val1, val2, val3]}
Run Code Online (Sandbox Code Playgroud)
我确实使用内置函数reversed()进行了尝试,但似乎创建了一个迭代器,该迭代器更改了我现有代码和for循环中的某些逻辑,该循环遍历这些字典env键并根据其值执行检查/验证。我现在了解到,常规字典不会跟踪插入顺序,并且对其进行迭代会以任意顺序给出值。
如果有一种更简单的方法可以让字典完全按照从数组中馈入/摄取它们的顺序使用env键,请帮助,即key1,key2,key3,或者可以将其反转为key3,key2,key1。但是,不要以现有的方式根据实际键名显示字母顺序。
一行字典理解:
print({k: dict(zip(list(v.keys())[::-1], list(v.values())[::-1])) for k, v in dict_result.items()})
Run Code Online (Sandbox Code Playgroud)
这适用于任意数量的密钥。
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |