词典是怎样分类的?

2024-09-28 04:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

女士们先生们

我有一个关于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'}

有人能给我解释一下这里发生了什么事吗?在


Tags: name元素city内容age定义词典first
3条回答

了解什么是哈希表:http://en.wikipedia.org/wiki/Hash_table

简而言之,dict有一个内部数组,并在通过散列函数选择的插槽中插入值。此函数的本质是将条目均匀分布。在

字典是无序的数据结构,所以您应该没有期望值

你从字典里得到的顺序是未定义的。你不应该依赖它。在这种情况下,它碰巧依赖于底层键的哈希值,但您不应该假设总是这样。在

如果顺序对您很重要,那么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')])

相关问题 更多 >

    热门问题