当前位置: 首页 > 后端技术 > Python

Python有序字典的两个小“惊喜”~~

时间:2023-03-26 00:50:31 Python

从Python3.6开始,正则字典会记住插入的顺序:即遍历字典时,得到字典中元素的插入顺序以相同的顺序插入和插入它们。在3.6之前,字典是无序的:遍历顺序是随机的。关于有序字典,这里有两件令人惊讶的事情。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==d2True>>>list(d1)['a','b']>>>list(d2)['b','a']>>>fromcollectionsimportOrderedDict>>>od1=OrderedDict([("a",1),("b",2)])>>>od2=OrderedDict([("b",2),("a",1)])>>od1==od2False>>>list(od1)['a','b']>>>list(od2)['b','a']>>>以上就是本篇的全部内容分享,想了解更多python知识,请前往公众号:Python编程学习圈,发“J”免费领取,每日干货分享