gpt4 book ai didi

python - 字典是如何排序的?

转载 作者:行者123 更新时间:2023-11-28 19:30:31 24 4
gpt4 key购买 nike

女士们先生们,

我对 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'}

有人可以向我解释一下这是怎么回事吗?

最佳答案

你从字典中得到的顺序是不确定的。你不应该依赖它。在这种情况下,它恰好取决于底层键的哈希值,但您不应假设情况总是如此。

如果顺序对您很重要,请使用 OrderedDict (自 Python 2.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')])

关于python - 字典是如何排序的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com