求各位大神帮我解答一下python字典是无序的,这个无序怎么理解,
以前没有注意,最近使用时发现,虽然比如我们想要向字典中添加新的数据无法控制它的顺序,但是每次我们遍历字典输出的时候,输出的顺序都是一样的,用的3.6的解释器,这个跟版本有关系吗,代码如下:
dict1={1:1,3:3,6:6,2:2}
for value in dict1.values():
... print(value)
...
1
3
6
2
for value in dict1.values():
... print(value)
...
1
3
6
2
你如果能通过索引的办法访问出数据,那就存在有序
字典不能用位置下标(1,2....)获取值,所以是无序的
支持@二楼
字典都是按照键来便利的,字典前面是键后面的是值,遍历字典都是遍历他的键,便利不出来他的值,但是可以通过枚举来把他的值和下标分开,向字典里添加数据时可以控制他的顺序,通过下标索引,或是通过他的位置,
a ={1:'张',2:'李'}
for index,value in enumerate(a):
print(value)
print('============================')
a ={1:'张',2:'李'}
for index,value in enumerate(a):
print(index)
print('============================')
a = {1: '张', 2: '李'}
for index in a:
print(index)
========结果========
1
2
============================
0
1
============================
1
2
字典是有序的,可以通过下标,位置来判断
@老鼠蟒蛇: python 字典只有key=>value ,没有下标,有下标的是列表
字典数据是有序的, 但是这个序不是由外部控制, 而是内部字典定位机制的序
所以对外来讲, 数据本身是无序的
你每次遍历的顺序一样, 是因为枚举结果是按内部排序输出
而无序则表示在你无法从外部控制最终的输出顺序
如果是你这种说法,python 的列表外部输出也是无序的咯!!
@xiaobaiskill: 列表有序啊....
判断方式看2楼 能用下标访问的就是有序....
python 的字典确实是 无序,你不能把它当做有序去看待。
python在3 版本之后对很多东西进行了优化包括字典,你看到的有序因为解释器优化了算法,使你的字典看上去有序,实则无序。
没必要纠结无序是啥意思了 , 你就明白不能按照列表那样处理就行了。 只能通过键值对来操作。
再说说你写的这一段代码吧, 实际工作中千万不要这么直接取数据(dic.values()),这样很占内存的,如果你的字典存的数据很大打过你的内存,你这句代码一执行,直接废了。 记住无论你想取key,还是value 直接循环字典就行,不要循环字典的key或者value