dict.values() 是否按顺序返回?

廖茂生*_*廖茂生 5 python dictionary

dict_mark = {'Wang': 'C', 'Li': 'B', 'Ma': 'A'}
s = ''
for c in dict_mark.values():
    s += c
print(s)
Run Code Online (Sandbox Code Playgroud)

字典是无序的,那么为什么dict_mark.values()总是返回这个值序列呢'C' 'B' 'A'

为什么不'B' 'A' 'C'或者'A' 'B' 'C'

GPh*_*ilo 6

无序并不意味着不具有确定性。

\n\n

来自 python 2.x 文档

\n\n
\n

如果调用 items()、keys()、values()、iteritems()、iterkeys() 和 itervalues() 且不对字典进行任何修改,则列表将直接对应。

\n
\n\n

python 3.x 文档中:

\n\n
\n

键和值以任意顺序迭代,该顺序是非随机的,因 Python 实现而异,并且取决于字典\xe2\x80\x99s 的插入和删除历史记录。

\n
\n\n

因此,返回的序列始终相同,直到您修改字典。您只是无法对其中排序的对象做出假设。

\n\n

看看这个问题及其答案,其中讨论了为什么(以及如何)在 python 3.6+ 中字典实际上是排序的。

\n