女士们先生们
我有一个关于蟒蛇字典的问题。在玩的时候,我发现了一些对我来说很奇怪的事情。
我给你下了这样的定义
Stuff={‘年龄’:26,‘名字’:‘房地美水星’,‘ciy’:‘符拉迪沃斯托克’}
然后,我在以下内容中添加'first‘一词:
Stuff1=“first”
当我把它打印出来的时候,很好
材料 {1:“第一”,“年龄”:26,“名字”:“弗雷迪·水星”,“城市”:“符拉迪沃斯托克”}
然后我再加上第二个字:
填充物2=“第二”
这很好,但是当我显示我得到的内容时:
材料 {1:“第一”,“年龄”:26,2:“第二”,“名字”:“房地美水星”,“城市”:“符拉迪沃斯托克”}
**注意,2现在是第三个元素,而不是第二个元素(按顺序排列)或第一个元素(如果元素添加到开头)
当我加上第三个元素'wtf‘时,突然一切都恢复正常了,我对发生了什么感到很困惑。
填料3=‘wtf’ 材料 {1:‘第一’,2:‘第二’,第3:'wtf',‘名字’:‘弗雷迪水星’,‘年龄’:26,‘城市’:‘符拉迪沃斯托克’}
有人能给我解释一下这是怎么回事吗?
发布于 2012-02-02 20:19:29
从字典中得到的顺序是没有定义的。你不应该依赖它。在本例中,它碰巧依赖于底层键的散列值,但您不应该假设情况总是如此。
如果订单对您很重要,那么use应该使用OrderedDict (自Python2.7以来):
>>> from collections import OrderedDict
>>> stuff=OrderedDict({'age':26,'name':'Freddie Mercury', 'city':'Vladivostok'})
>>> stuff[1]='first'
>>> print stuff
OrderedDict([('city', 'Vladivostok'), ('age', 26), ('name', 'Freddie Mercury'), (1, 'first')])
>>> stuff[2]='second'
>>> print stuff
OrderedDict([('city', 'Vladivostok'), ('age', 26), ('name', 'Freddie Mercury'), (1, 'first'), (2, 'second')])
>>> stuff[3]='wtf'
>>> print stuff
OrderedDict([('city', 'Vladivostok'), ('age', 26), ('name', 'Freddie Mercury'), (1, 'first'), (2, 'second'), (3, 'wtf')])发布于 2012-02-02 20:18:37
字典是无序的数据结构,所以您不应该有任何期望。
发布于 2012-02-02 20:20:45
了解哈希表是什么:表格
简而言之,dict有一个内部数组,并在通过哈希函数选择的槽处插入值。这个函数的本质是将条目均匀地分布在周围。
https://stackoverflow.com/questions/9119330
复制相似问题