Skip to main content
 首页 » 编程设计

Python 以预定义的顺序对 Dict 进行排序

2025年05月04日17emanlee

接收一个字典并返回一个新的有序字典

从 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+,您可以依赖插入顺序并使用常规字典。