我有下面的dict列表,需要按键和值对不同的dict进行排序
[{'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的列表并不总是有labels和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'}}]