资讯专栏INFORMATION COLUMN

Python 有序字典简介

DrizzleX / 1569人阅读

摘要:有序字典简介示例有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。

有序字典-OrderedDict简介 示例

有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。参见下面的例子:

import collections

print "Regular dictionary:"
d = {}
d["a"] = "A"
d["b"] = "B"
d["c"] = "C"
d["d"] = "D"
d["e"] = "E"

for k, v in d.items():
    print k, v

print "
OrderedDict:"
d = collections.OrderedDict()
d["a"] = "A"
d["b"] = "B"
d["c"] = "C"
d["d"] = "D"
d["e"] = "E"

for k, v in d.items():
    print k, v

运行结果如下:

-> python test7.py
Regular dictionary:
a A
c C
b B
e E
d D

OrderedDict:
a A
b B
c C
d D
e E

可以看到通常字典不是以插入顺序遍历的。

相等性

判断两个有序字段是否相等(==)需要考虑元素插入的顺序是否相等

import collections

print "dict       :",
d1 = {}
d1["a"] = "A"
d1["b"] = "B"
d1["c"] = "C"
d1["d"] = "D"
d1["e"] = "E"

d2 = {}
d2["e"] = "E"
d2["d"] = "D"
d2["c"] = "C"
d2["b"] = "B"
d2["a"] = "A"

print d1 == d2

print "OrderedDict:",

d1 = collections.OrderedDict()
d1["a"] = "A"
d1["b"] = "B"
d1["c"] = "C"
d1["d"] = "D"
d1["e"] = "E"

d2 = collections.OrderedDict()
d2["e"] = "E"
d2["d"] = "D"
d2["c"] = "C"
d2["b"] = "B"
d2["a"] = "A"

print d1 == d2

运行结果如下:

-> python test7.py
dict       : True
OrderedDict: False

而当判断一个有序字典和其它普通字典是否相等只需判断内容是否相等。

注意

OrderedDict 的构造器或者 update() 方法虽然接受关键字参数,但因为python的函数调用会使用无序的字典来传递参数,所以关键字参数的顺序会丢失,所以创造出来的有序字典不能保证其顺序。

参考资料

https://docs.python.org/2/lib...

https://pymotw.com/2/collecti...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44298.html

相关文章

  • Redis 有序集合

    摘要:返回值当存在且是有序集类型时,返回有序集的基数。返回值如果存在于排序集中,则整数回复排名。返回值被成功移除的成员的数量,不包括被忽略的成员。返回值成员的新值,以字符串形式表示。返回值指定区间内,带有值可选的有序集成员的列表。 简介 有序集合是给每个元素设置一个分数(score)作为排序的依据这一概念的集合,其也是不能有重复元素的。有序集合提供了获取指定分数和元素范围查询、计算成员排名等...

    roadtogeek 评论0 收藏0
  • Python中的字典到底是有序的吗

    摘要:并且中会显示,的版本在中已经不再支持了。接下来再看下以上版本的效果以版本为例从上图可以看出,在新的版本中,针对的存储已经变为有序,在遍历和打印的时候,会按照存储的顺序进行取值。再补充一点之前介绍到,在字典中,是唯一的。 之前写了文章介绍python中的列表和字典,在文章中描述到了python...

    aervon 评论0 收藏0
  • python3.7的字典有序

    摘要:表容量更新的前后,它的键之间的相对顺序是会变化的,因此字典的元素是无序的。而且字典扩容和缩容时要按照的顺序来保持字典始终有序。旧的字典总会预留大于的容量的位置,防止碰撞过多影响效率。 python3.7的字典是有序的 旧结构 python3.7之前的字典结构,经典粗暴的hash表实现方式,这样的话每次hash表的扩容和缩容都可能导致hash值的改变。 hash表容量更新的前后,它的键之...

    iamyoung001 评论0 收藏0
  • Python字典小结

    摘要:我们用函数,来简单快捷地创建这个字典输出结果与原先代码一致。示例代码如下版本为无序字典有序字典输出的结果为无序字典有序字典默认字典是内建类的一个子类,第一个参数为属性提供初始值,默认为。   字典(dict)结构是Python中常用的数据结构,笔者结合自己的实际使用经验,对字典方面的相关知识做个小结,希望能对读者一些启发~ 创建字典   常见的字典创建方法就是先建立一个空字典,然后逐一...

    BoYang 评论0 收藏0
  • Python实用技法第6篇:让字典保持有序

    摘要:上一篇文章实用技法第篇一键多值字典下一篇文章实用技法第篇字典上对数据执行计算求最小值最大值排序需求 上一篇文章:Python实用技法第5篇:一键多值字典下一篇文章:Python实用技法第7篇:字典上对数据执行计算:求最小值、最大值、排序 1、需求

    scwang90 评论0 收藏0

发表评论

0条评论

DrizzleX

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<