接收一个字典并返回一个新的有序字典
从 api 返回的 json:
{
'host': '192.168.0.1',
'name': 'my_new_name',
'port': 443,
'something_more': 'hello'
}
目标:
{
'name': 'my_new_name',
'something_more': 'hello',
'host': '192.168.0.1',
'port': 443
}
有什么方法可以定义键的顺序?
例如要在目标上实现这个顺序:
key_order = ('name', 'something_more', 'host', 'port')
谢谢
请您参考如下方法:
您可以使用列表理解将元组列表提供给 collections.OrderedDict :
from collections import OrderedDict
d = {'host': '192.168.0.1', 'name': 'my_new_name',
'port': 443, 'something_more': 'hello'}
key_order = ('name', 'something_more', 'host', 'port')
res = OrderedDict([(k, d[k]) for k in key_order])
OrderedDict([('name', 'my_new_name'),
('something_more', 'hello'),
('host', '192.168.0.1'),
('port', 443)])
适用于 Python 2.x 及以上版本。对于 Python 3.7+,您可以依赖插入顺序并使用常规字典。
