首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典是怎么分类的?

字典是怎么分类的?
EN

Stack Overflow用户
提问于 2012-02-02 20:16:51
回答 6查看 357关注 0票数 2

女士们先生们

我有一个关于蟒蛇字典的问题。在玩的时候,我发现了一些对我来说很奇怪的事情。

我给你下了这样的定义

Stuff={‘年龄’:26,‘名字’:‘房地美水星’,‘ciy’:‘符拉迪沃斯托克’}

然后,我在以下内容中添加'first‘一词:

Stuff1=“first”

当我把它打印出来的时候,很好

材料 {1:“第一”,“年龄”:26,“名字”:“弗雷迪·水星”,“城市”:“符拉迪沃斯托克”}

然后我再加上第二个字:

填充物2=“第二”

这很好,但是当我显示我得到的内容时:

材料 {1:“第一”,“年龄”:26,2:“第二”,“名字”:“房地美水星”,“城市”:“符拉迪沃斯托克”}

**注意,2现在是第三个元素,而不是第二个元素(按顺序排列)或第一个元素(如果元素添加到开头)

当我加上第三个元素'wtf‘时,突然一切都恢复正常了,我对发生了什么感到很困惑。

填料3=‘wtf’ 材料 {1:‘第一’,2:‘第二’,第3:'wtf',‘名字’:‘弗雷迪水星’,‘年龄’:26,‘城市’:‘符拉迪沃斯托克’}

有人能给我解释一下这是怎么回事吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-02-02 20:19:29

从字典中得到的顺序是没有定义的。你不应该依赖它。在本例中,它碰巧依赖于底层键的散列值,但您不应该假设情况总是如此。

如果订单对您很重要,那么use应该使用OrderedDict (自Python2.7以来):

代码语言:javascript
复制
>>> 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')])
票数 22
EN

Stack Overflow用户

发布于 2012-02-02 20:18:37

字典是无序的数据结构,所以您不应该有任何期望。

票数 10
EN

Stack Overflow用户

发布于 2012-02-02 20:20:45

了解哈希表是什么:表格

简而言之,dict有一个内部数组,并在通过哈希函数选择的槽处插入值。这个函数的本质是将条目均匀地分布在周围。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9119330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档