之前我认为python中的字典是无序的,因为它是按照hash来存储的,最近开发过程中对数据序列化之后,返回了OrderedDict类型数据,返回数据格式如下
[OrderedDict([('id', 1), ('prop_code', u'mysql'), ('prop_name', u'MySQL测试'), ('prop_value', u'{"db_structure":"mysql","service_name":"xxxx-mysql.service.xxxx.local","service_port":"4306""topology":{"master":[{"ipaddr":"xx.xx.xx.xx","port":"4306"},{"ipaddr":"xx.xx.xx.xx","port":"4306"},...]}}'), ('prop_status', 1), ('create_time', '2021-10-12T18:45:50'), ('update_time', '2021-10-12T18:45:50'), ('memo', None)])]
复制
下面简单看下OrderedDict和dict的区别:
Python 的基础数据类型中的字典类型分为:无序字典 与 有序字典 两种类型
1.无序字典(普通字典)
my_dict = dict()
my_dict["name"] = "test"
my_dict["age"] = 27
my_dict["girl"] = "bob"
my_dict["money"] = 100
my_dict["hourse"] = None
for key, value in my_dict.items():
print(key, value)
复制
输出:
money 100
girl bob
age 27
hourse None
name test
复制
可以看见,遍历一个普通字典,返回的数据和定义字典时的字段顺序是不一致的。
注意:
Python3.6 改写了 dict 的内部算法,Python3.6 版本以后的 dict 是有序的,所以也就无须再关注 dict 顺序性的问题
2.有序字典
import collections
my_order_dict = collections.OrderedDict()
my_order_dict["name"] = "test"
my_order_dict["age"] = 27
my_order_dict["money"] = 100
my_order_dict["hourse"] = None
for key, value in my_order_dict.items():
print(key, value)
复制
输出:
name test
age 27
money 100
hourse None
复制
有序字典可以按字典中元素的插入顺序来输出。
注意:
有序字典的作用只是记住元素插入顺序并按顺序输出。如果有序字典中的元素一开始就定义好了,后面没有插入元素这一动作,那么遍历有序字典,其输出结果仍然是无序的,因为缺少了有序插入这一条件,所以此时有序字典就失去了作用,所以有序字典一般用于动态添加并需要按添加顺序输出的时候。
如下面这个列子:
import collections
my_order_dict = collections.OrderedDict(name="test", age=27, money=100, hourse=None)
for key, value in my_order_dict.items():
print(key, value)
复制
输出:
hourse None
age 27
money 100
name test
复制
发现输出还是无序的,因为在定义有序字典的同时也定义了初始值,没有存在按序添加的操作,所以有序字典是没有记录插入字段的顺序,最后遍历时,得到数据的顺序仍然是无序的。
文章转载自DBA的辛酸事儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
演讲实录|分布式 Python 计算服务 MaxFrame 介绍及场景应用方案
阿里云大数据AI技术
112次阅读
2025-03-17 13:27:37
mysql提升10倍count(*)的神器
大大刺猬
85次阅读
2025-03-21 16:54:21
[MYSQL] query_id和STATEMENT_ID在不同OS上的关系
大大刺猬
52次阅读
2025-03-26 19:08:13
DataWorks :Data+AI 一体化开发实战图谱
阿里云大数据AI技术
40次阅读
2025-03-19 11:00:55
国密算法介绍
漫步者
36次阅读
2025-03-21 09:20:39
自动化办公:利用Python和DeepSeek API高效制作Word文档(附源码)
数据库平台优化
36次阅读
2025-03-06 09:27:00
迎接deepseek,助力企业AI整合
威哥
34次阅读
2025-03-09 20:54:43
AI 提示词魔法:教你用 AI 提升效率与创意
数智新知
33次阅读
2025-03-10 10:30:27
如何使用 RisingWave 和 PuppyGraph 构建高性能实时图分析框架
RisingWave中文开源社区
29次阅读
2025-03-18 10:49:54
Python使用MySQL数据库(新)
怀念和想念
23次阅读
2025-03-26 09:11:04