大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Python中有序字典的特点是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联是一家专注于网站制作、做网站和服务器托管的网络公司,有着丰富的建站经验和案例。
1. 你无法获得第一个元素
由于字典中的元素具有特定的顺序,因此获取第一个(或第 N 个)元素应该很容易,对吧?
不对!没办法直接做到。
你可能会认为 d[0] 就是第一个元素,但并不是,它只是键为 0 的值,有可能是添加到字典的最后一个元素。
获得第 N 个元素的唯一方法是遍历字典,直到取得第 N 个元素。不能根据有序索引来作随机访问。
这是一处列表胜过字典的地方。获取列表的第 N 个元素是 O(1) 操作。获取字典的第 N 个元素(即使已排序)是 O(N) 操作。
2. OrderedDict 有点不同
由于现在的字典是有序的,collections.OrderedDict 就没用了,对吧?
(译注:3.6 版本前的 dict 是无序的,但标准库里提供了一个有序字典 OrderedDict。现在 dict 变有序了,那 OrderedDict 似乎是多余了?)
好像是。但是它不会被删除,因为那样会破坏正在使用它的代码,并且它还拥有一些常规字典没有的方法。
另外,它们在行为上也有细微的差别。在比较是否相等时,常规字典不会考虑顺序,但 OrderedDict 会:
>>> d1 = {"a": 1, "b": 2} >>> d2 = {"b": 2, "a": 1} >>> d1 == d2 True >>> list(d1) ['a', 'b'] >>> list(d2) ['b', 'a'] >>> from collections import OrderedDict >>> od1 = OrderedDict([("a", 1), ("b", 2)]) >>> od2 = OrderedDict([("b", 2), ("a", 1)]) >>> od1 == od2 False >>> list(od1) ['a', 'b'] >>> list(od2) ['b', 'a'] >>>
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。