Python如何按指定映射规则重排列表内每个字典的键顺序
实现方法
Python 3.7及以上版本的原生字典默认支持保留插入顺序,你可以按照以下步骤实现需求:
- 首先从给定的映射关系中提取出按优先级排序的键序列
# 按mapping的数字键从小到大排序,取出对应字段名,得到目标键顺序 key_order = [mapping[num] for num in sorted(mapping.keys())]
- 遍历原字典列表,按上述键顺序重新构造字典即可
new_lis = [{key: old_dict[key] for key in key_order} for old_dict in lis]
如果你使用的是3.7以下的Python版本,可以用collections.OrderedDict来保证顺序:
from collections import OrderedDict key_order = [mapping[num] for num in sorted(mapping.keys())] new_lis = [OrderedDict((key, old_dict[key]) for key in key_order) for old_dict in lis]
以上代码会直接得到你预期的调整顺序后的列表,如果你不需要保留原列表,也可以直接覆盖原lis变量。
内容的提问来源于stack exchange,提问作者Debapratim Chakraborty
相关产品推荐
相关产品推荐

