python - 不同字典的Python排序列表
问题描述
我有下面的字典列表,需要对每个键和值的不同字典进行排序
[{'label': [{'href': '/orgs/x/labels/xx'}]},
{'ip_list': [{'href': '/orgs/x/sec_policy/draft/ip_lists/12'},
{'href': '/orgs/x/sec_policy/draft/ip_lists/11'}]}]
需要这个输出
[{'ip_list': [{'href': '/orgs/x/sec_policy/draft/ip_lists/11'},
{'href': '/orgs/x/sec_policy/draft/ip_lists/12'}]},
{'label': [{'href': '/orgs/x/labels/xx'}]}]
此外,dict 列表并不总是具有标签和 ip_lists 的键。它可能是其中之一或两者兼而有之。
或者它可以是
[{'label': [{'href': '/orgs/x/labels/xx'}]},
{'ip_list': [{'href': '/orgs/x/sec_policy/draft/ip_lists/12'}]}]
我希望输出为
[{'ip_list': [{'href': '/orgs/x/sec_policy/draft/ip_lists/12'}]},
{'label': [{'href': '/orgs/x/labels/xx'}]}]
或者它可以是
[{'ip_list': [{'href': '/orgs/x/sec_policy/draft/ip_lists/12'}, {'href': '/orgs/x/sec_policy/draft/ip_lists/11'}]}]
我希望输出为
[{'ip_list': [{'href': '/orgs/x/sec_policy/draft/ip_lists/11'}, {'href': '/orgs/x/sec_policy/draft/ip_lists/12'}]}]
解决方案
您可以使用 lambda 函数对键进行排序。您可以在键上使用 list() 并使用第 0 项,以避免 'TypeError: 'dict_keys' object is not subscriptable':
dict1_list = [{'label': {'href': '/orgs/x/labels/xx'}},
{'ip_list': [{'href': '/orgs/x/sec_policy/draft/ip_lists/xx'},
{'href': '/orgs/x/sec_policy/draft/ip_lists/xx'}]}]
dict1_list.sort(key=lambda x: list(x.keys())[0])
print(dict1_list)
# [{'ip_list': [{'href': '/orgs/x/sec_policy/draft/ip_lists/xx'}, {'href': '/orgs/x/sec_policy/draft/ip_lists/xx'}]},
{'label': {'href': '/orgs/x/labels/xx'}}]
推荐阅读
- c# - 如果需要,我是否需要 IEnumerator 通过 foreach 循环运行通用列表,它是如何实现的
- php - 将一个功能一分为二
- c++ - 在 Visual Studio 2017 C++ 项目中提升 C++ 库 - “无法打开包含文件”
- mongodb - MongoDB - 使用嵌套对象和可变键进行聚合
- python - 怎样才能让程序只有在按下回车键时才能继续?
- javascript - 如何在不重新加载页面的情况下将信息发送到数据库?
- go - 为什么要 json.Unmarshal 自动转换 interface{} 到 map
- mongodb - 如何使 mongodb 显示用作排序标准的计算
- python - 使用 Pandas 在每列之间执行比较的最快方法
- python - 什么是“-ensorflow”?我无法卸载它