Kev*_*vin 3 python dictionary ipython python-2.7
>>> d = {'A':1, 'b':2, 'c':3, 'D':4}
>>> d
{'A': 1, 'D': 4, 'b': 2, 'c': 3}
>>> d.items()
[('A', 1), ('c', 3), ('b', 2), ('D', 4)]
Run Code Online (Sandbox Code Playgroud)
当我调用d.items()时,订单会被随机化两次吗?或者只是以不同方式随机化?是否有任何替代方法使d.items()返回与d相同的顺序?
编辑:似乎是一个IPython的东西,它自动排序字典.通常dict和dict.items()的顺序应该相同.
你好像在IPython上测试了这个.IPython使用自己专门针对各种类型的漂亮打印设备,而用于dicts的漂亮打印机在打印前对键进行排序(如果可能).该d.items()呼叫没有按键排序,所以输出是不同的.
在普通的Python会话中,dict中项目repr的顺序将与items方法中项目的顺序相匹配.只要不修改dict,Dict迭代顺序就应该是稳定的.(这种保证没有明确地扩展到dict repr,但如果隐式迭代repr与其他形式的dict迭代一致,那就太令人惊讶了.)