哪个PEP控制dict.values()的顺序?

Sal*_*ley 1 python dictionary

当您调用dict.values()时,返回项的顺序取决于键的has值.这似乎在所有版本的cPython中都非常一致,但是dict的python手册只是说明了排序是"任意的".

我记得在某个地方读过,实际上有一个PEP专门说明了items()和values()方法的预期排序.

仅供参考,如果这种行为确实是我正在研究的类的保证行为,我可以大大简化并加快我正在研究的课程.另一方面,如果这仅仅是cPython的一个偶然且无法记录的特征,那么最好不要相信它.

Ben*_*ork 7

来自http://docs.python.org/library/stdtypes.html:

键和值以任意顺序列出,这是非随机的,在Python实现中各不相同,并且取决于字典的插入和删除历史.


Sil*_*ost 6

我认为PEP-3106尽可能接近:

规范暗示.keys(),.value()和.items()返回项的顺序是相同的(就像在Python 2.x中一样),因为顺序都是从dict派生的迭代器(假设dict未被修改,可能是任意但稳定的).这可以用以下不变量表示:

list(d.items()) == list(zip(d.keys(), d.values()))