首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python有序字典

最近的django开发中用到了有序字典,所以研究了一下,以下。 示例: 有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。 普通字典: ?...由上面的结果可以看出对普通字典进行遍历,输出结果是无序的。 下面是有序字典(需要导入collections包): ? 对比两种输出结果,不难发现,有序字典可以按字典中元素的插入顺序来输出。...上面两个例子之所以字典中插入元素,而不是一开始就将字典中的元素定义好,是因为有序字典的作用只是记住元素插入顺序并按顺序输出。...如果有序字典中的元素一开始就定义好了,后面没有插入元素这一动作,那么遍历有序字典,其输出结果为空,因为缺少了有序插入这一条件,所以此时有序字典就失去了作用,所以有序字典一般用于动态添加并需要按添加顺序输出的时候

44030
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 有序字典的实现

    如果要我自己实现的话,自己会想到用一个有序存储的对象(如列表)去 hack 内部的实现,但这样有几个缺点: 列表的插入、删除操作性能不如字典,复杂度是 O(N) 量级的。...另外还初始化了一个字典,暂时不知道有什么用。 __setitem__方法 Python def __setitem__(self, key, value, dict_setitem=dict....创建一个新结点,它的上结点和下结点分别设为last和root,结点的值为字典的键。 将last的下结点和root的上结点指向该结点。 将结点加入__map并加入字典。...__delitem__方法 Python def __delitem__(self, key, dict_delitem=dict.__delitem__): 'od....总结 实现有序字典的关键在于选取一个合适的数据结构来存储顺序信息,这里作者使用了双向链表,然后把结点哈希。

    1.3K10

    Python有序字典(OrderedDict)与 普通字典(dict)

    之前我认为python中的字典是无序的,因为它是按照hash来存储的,最近开发过程中对数据序列化之后,返回了OrderedDict类型数据,返回数据格式如下 [OrderedDict([('id', 1...的基础数据类型中的字典类型分为:无序字典有序字典 两种类型 1.无序字典(普通字典) my_dict = dict() my_dict["name"] = "test" my_dict["age...注意: Python3.6 改写了 dict 的内部算法,Python3.6 版本以后的 dict 是有序的,所以也就无须再关注 dict 顺序性的问题 2.有序字典 import collections...注意: 有序字典的作用只是记住元素插入顺序并按顺序输出。...如果有序字典中的元素一开始就定义好了,后面没有插入元素这一动作,那么遍历有序字典,其输出结果仍然是无序的,因为缺少了有序插入这一条件,所以此时有序字典就失去了作用,所以有序字典一般用于动态添加并需要按添加顺序输出的时候

    3K80

    Python字典到底有序还是无序?

    Python中的字典dict,到底是无序的还是有序的? 有人说无序;也有人说以前无序,但3.6开始改成有序了。 两种说法都对,但这个有序无序,可能跟你想的不太一样。...老版本Python中的dict确实无序,你写的是a、b、c,输出却可能是c、b、a。 而从Python3.6开始,dict的插入顺序是保持的。...字典是无序的也有一定道理。...比较两个元素相同但顺序不同的字典是否相等,结果是True。这是因为dict定义的相等性比较是基于元素的内容,而不考虑插入的顺序。 相比之下,刚刚提到的OrderedDict,才真的是名副其实的有序。...所以你觉得,python字典到底应该称为有序还是无序呢? 作者:Crossin的编程教室

    13020

    Python面向对象6:​isinstance、super、有序字典

    (Foo): deff1(self): print('before') super(myfoo,self).f1() print('after') 3)index文件不做任何修改,执行结果 3、设置有序字典...classmydict(dict):#继承字典的类,字典是无序的 def__init__(self): self.li=[] super(mydict,self)....__setitem__(key,value)#执行父类dict的setitem方法,设置字典或新增字典值 def__str__(self):#mydict自己的str方法 temp_list=[]#设置一个空字典...,用于存放字典为列表 forkeyinself.li: value=self.get(key) temp_list.append("%s:%s"%(key,value)) temp_str="字典拼接后...getitem,有等号的时候执行setitem obj['k2']=456 print(obj)#会执行mydict类中的str方法,如果mydict无str方法,则执行dic的str方法 执行结果:字典显示顺序永远不会变

    62780

    【编程课堂】有序字典 OrderedDict

    每期讲解一个编程知识点,包括但不限于 Python 语法、模块介绍、编程小技巧等。用简短的篇幅,让你多了解一点编程。 上周每周一坑的题目 三门问题 将在本周讲解,还没有看过的同学赶紧的。...在我们的 Python 入门系列文章中,有介绍过字典 dict:【Python 第37课】 字典。其中有简单提及到,字典中的键值对是没有顺序的,所以无法像列表或元组一样通过索引来访问元素。...简单来说,就是有序字典和普通的字典并无差异,但是它记录了条目添加的顺序,当迭代有序字典时,字典内容随着被添加的顺序返回。...OrderedDict d = {'a': 2, 'b': 3, 'c': 1} # 以 value 值对 dic 排序 sd = sorted(d.items(), key=lambda x: x[1]) # 转换为有序字典...od = OrderedDict(sd) print(od) 如此就生成了一个排序后的有序字典

    1.6K80

    为什么Python 3.7以后字典有序并且效率更高?

    Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。...但是从Python 3.6开始,字典是变成有顺序的了。你先插入键值对A,后插入键值对B,那么当你打印Keys列表的时候,你就会发现B在A的后面。...不仅如此,从Python 3.6开始,下面的三种遍历操作,效率要高于Python 3.5之前: for key in 字典 for value in 字典.values() for key, value...in 字典.items() 从Python 3.6开始,字典占用内存空间的大小,视字典里面键值对的个数,只有原来的30%~95%。...Python 3.6到底对字典做了什么优化呢?为了说明这个问题,我们需要先来说一说,在Python 3.5(含)之前,字典的底层原理。

    3.1K41

    Python中的字典到底是有序的吗

    之前写了文章介绍python中的列表和字典,在文章中描述到了python中的列表是有序的,字典是无序的,后来有粉丝在群里提醒我,说python3.6的版本之后,字典有序的,因此,我找了一个低版本的...python来验证一下效果: 首先,从官网下载python3.4的版本,然后编写一行代码验证一下打印字典的所有key。...查看打印出来的key的顺序: Python3.6以下版本:(以3.4版本为例) 你该不会以为只有使用keys()函数是无序的吧: 从上图可以看出,分别在cmd窗口和pycharm中打印字典的key...接下来再看下python3.6以上版本的效果:(以3.9版本为例) 从上图可以看出,在新的版本中,python针对key的存储已经变为有序,在遍历和打印的时候,会按照存储的顺序进行取值。...再补充一点:之前介绍到,在字典中,key是唯一的。这里并不是说写了不唯一的key就会报错,只是会用后面的key和value去覆盖前面的key和value。

    1.8K20

    带你了解Python 3.6以后字典为什么有序并且效率更高?

    哈喽~今天带你们了解python3.6以后字典为什么有序并且效率更高呢?​...在Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。...不仅如此,从Python 3.6开始,下面的三种遍历操作,效率要高于Python 3.5之前: python">for key in 字典 for value in 字典.values() for...key, value in 字典.items() 从Python 3.6开始,字典占用内存空间的大小,视字典里面键值对的个数,只有原来的30%~95%。...Python 3.6到底对字典做了什么优化呢?为了说明这个问题,我们需要先来说一说,在Python 3.5(含)之前,字典的底层原理。

    96230
    领券