女士们先生们
我有一个关于python词典的问题。在玩的时候,我注意到了一些对我来说很奇怪的东西。在
我给这句话下了定义
stuff={'age':26,'name':'Freddie Mercury','ciy':'符拉迪沃斯托克'}
然后我在下面的内容中加上“第一个”这个词:
stuff[1]='first'
当我打印出来的时候,就没事了
stuff
{1: 'first', 'age': 26, 'name': 'Freddie Mercury', 'city': 'Vladivostok'}
然后我加上第二个字:
stuff[2]='second'
这很好,但是当我显示内容时,我得到:
stuff
{1: 'first', 'age': 26, 2: 'second', 'name': 'Freddie Mercury', 'city': 'Vladivostok'}
**请注意,2现在是第三个元素,而不是第二个(按顺序)或第一个(如果元素被添加到开头)元素
当我加入第三个元素'wtf'时,突然一切都恢复了秩序,我很困惑到底发生了什么。在
stuff[3]='wtf'
stuff
{1: 'first', 2: 'second', 3: 'wtf', 'name': 'Freddie Mercury', 'age': 26, 'city': 'Vladivostok'}
有人能给我解释一下这里发生了什么事吗?在
了解什么是哈希表:http://en.wikipedia.org/wiki/Hash_table
简而言之,dict有一个内部数组,并在通过散列函数选择的插槽中插入值。此函数的本质是将条目均匀分布。在
字典是无序的数据结构,所以您应该没有期望值
你从字典里得到的顺序是未定义的。你不应该依赖它。在这种情况下,它碰巧依赖于底层键的哈希值,但您不应该假设总是这样。在
如果顺序对您很重要,那么use应该使用OrderedDict(因为python2.7):
相关问题 更多 >
编程相关推荐