Python collections.OrderedDict解决dict元素顺序问题详解编程语言

编程中遇到个问题,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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11617.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论