Python collections.OrderedDict解决dict元素顺序问题

简介: 编程中遇到个问题,python json.loads时元素顺序可能会发生变化。这个对于一些需要使用元素顺序来做一些策略的代码来说是致命的。在网上查了查,结合自己的知识总结一下。使用dict时,Key是无序的。

编程中遇到个问题,python json.loads时元素顺序可能会发生变化

这个对于一些需要使用元素顺序来做一些策略的代码来说是致命的。

在网上查了查,结合自己的知识总结一下。


使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。

如果要保持Key的顺序,可以用OrderedDict。

OrderedDict的Key会按照插入的顺序排列,不是Key本身排序

 1 #coding=utf-8
 2 
 3 import json
 4 import collections
 5 
 6 my_dict = {}
 7 my_list = ["测试", "1324", "r4ge5"]
 8 
 9 for i in my_list:
10     my_dict[i] = my_list[my_list.index(i)]
11 
12 print "str1原串:"
13 str1 = json.dumps(my_dict, ensure_ascii=False)
14 print str1
15 
16 print "对str1字符串进行loads后的结果:"
17 data_js = json.loads(str1)
18 print json.dumps(data_js, ensure_ascii=False).encode("utf8")
19 
20 print "对str1字符串进行loads后的结果(使用OrderedDict):"
21 data_js = json.loads(str1, object_pairs_hook=collections.OrderedDict)
22 print json.dumps(data_js, ensure_ascii=False).encode("utf8")

执行结果:

str1原串:
{"测试": "测试", "r4ge5": "r4ge5", "1324": "1324"}
对str1字符串进行loads后的结果:
{"r4ge5": "r4ge5", "1324": "1324", "测试": "测试"}
对str1字符串进行loads后的结果(使用OrderedDict):
{"测试": "测试", "r4ge5": "r4ge5", "1324": "1324"}

 

更多可以参考:

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001411031239400f7181f65f33a4623bc42276a605debf6000

相关文章
|
3月前
|
Python
python 如何将QueryDict转化为dict | 18
python 如何将QueryDict转化为dict | 18
|
3月前
|
Python
Python 选出列表中特定的元素
Python 选出列表中特定的元素
|
3月前
|
数据处理 索引 Python
Python列表与元素修改的操作技巧
Python列表提供了丰富的方法和技巧来进行高效的数据操作。熟练运用上述技巧,可以大大提高数据处理的效率和代码的可读性。实践中,根据具体需求灵活选择合适的方法,可以在保证代码效率的同时,也使代码更加简洁明了。
73 2
|
3月前
|
安全 Python 容器
Python中好用的模块-collections
文章介绍了Python中collections模块的几个实用组件,包括Counter、defaultdict、OrderedDict、namedtuple、deque和ChainMap的功能与使用方法。
25 2
|
2月前
|
程序员 Python 容器
python 中的 collections 模块:常用数据结构和工具详解
python 中的 collections 模块:常用数据结构和工具详解
16 0
|
3月前
|
安全 索引 Python
30天拿下Python之collections模块
30天拿下Python之collections模块
18 0
|
4月前
|
程序员 Python
Python 将元素添加到列表
【8月更文挑战第21天】
226 3
|
4月前
|
测试技术 Python 容器
Python接口自动化测试框架(基础篇)-- 常用数据类型dict
这篇文章详细介绍了Python中字典(dict)数据类型的使用,包括字典的创建、取值、增删改操作以及内置函数的应用,并探讨了字典的扩展特性,如键的唯一性和不可变性。
21 0
Python接口自动化测试框架(基础篇)-- 常用数据类型dict
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合
解决LeetCode平台《剑指 Offer II 082. 含有重复元素集合的组合》题目的Python代码实现,通过深度优先搜索算法找出所有和为特定目标值的数字组合,并在搜索过程中通过排序和跳过重复元素来避免解集中出现重复组合。
41 2
|
4月前
|
存储 Python 容器
python内置collections模块的使用
python内置collections模块的使用
17 0