python - Python order 具有预定义顺序的字典
问题描述
接收一个字典并返回一个新的有序字典
从 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+,您可以依赖插入排序并使用常规字典。
推荐阅读
- flutter - 当我在颤动中从 json 获取数据时,硬编码标记正在显示但不显示标记
- azure-data-factory - ADF 映射数据流源 - 可以使用查询提示 (OPTION) 吗?
- java - struts2-jquery-tree-plugin:TreeView 不会显示
- python - 我的 Discord Bot 中“没有名为 'dotenv' 的模块”
- cakephp - 如何默认加载一些关联?
- azure - FMI Toolbox Matlab Azure Devops CI Pipeline Bugs with network service account
- excel - 提取单元格数据,而行内的其他单元格匹配字符串
- data-annotations - Azure 数据工厂 - 通过数据注释查询管道
- php - 如何访问类中的常量?
- php - 我在标签内容中有登录和注册表单。所以问题是我可以为任何一种形式设置动作。我该如何解决