博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python collections.OrderedDict解决dict元素顺序问题
阅读量:6832 次
发布时间:2019-06-26

本文共 1185 字,大约阅读时间需要 3 分钟。

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

转载于:https://www.cnblogs.com/xudong-bupt/p/7379661.html

你可能感兴趣的文章
mysql 的存储过程调试软件
查看>>
Apache Solr配置
查看>>
getDimension()、getDimensionPixelOffset()和getDimensionPixelSize()区别详解
查看>>
退出Activity(转)
查看>>
前端开发者喜欢的20个学习文档和指南
查看>>
“超级课程表”余佳文:初生牛犊不怕虎
查看>>
php 不依赖数据实现删除图片,核心代码
查看>>
[翻译]:SQL死锁-锁的类型
查看>>
web.xml 详细介绍
查看>>
[转]Why Not Paxos
查看>>
C# 反射 通过类名创建类实例
查看>>
VC中获取窗体句柄的各种方法
查看>>
jsp各部分编码的含义
查看>>
知方可补不足~Sqlserver中的几把锁和.net中的事务级别 回到目录
查看>>
【高德地图API】那些年我们一起开发的APP—即LBS应用模式分享
查看>>
通过广播来监听屏幕点亮和关闭状态
查看>>
Cocos2dx引擎10-事件派发
查看>>
基于jQuery的宽屏可左右切换的焦点图插件
查看>>
IT技术需求建立时需考虑的因素
查看>>
猛醒:也许我们一生追求的都错了!
查看>>