>>> 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)]
当我调用d.items()时,订单是否会被随机化两次?或者只是以不同方式随机化?是否有任何替代方法使d.items()返回与d相同的顺序?
编辑:似乎是一个IPython的东西,它自动排序字典。通常dict和dict.items()的顺序应该相同。
答案 0 :(得分:9)
你似乎已经在IPython上测试了这个。 IPython使用自己专门针对各种类型的漂亮打印设备,而用于dicts的漂亮打印机在打印前对键进行排序(如果可能)。 repr
调用不对键进行排序,因此输出不同。
在普通的Python会话中,字典items
中项目的顺序将与repr
方法中的项目顺序相匹配。只要不修改dict,Dict迭代顺序就应该是稳定的。 (此保证未明确扩展到dict的repr
,但如果<c:url value="/resources/js" var="js"/>
<c:url value="/resources/css" var="css"/>
<html>
<head>
<link href="${css}/bootstrap.min.css" rel="stylesheet">
<link href="${css}/stylesheet.css" rel="stylesheet">
</head>
<body>
...
<script src="${js}/jquery-2.1.4.min.js"></script>
<script src="${js}/bootstrap.min.js"></script>
</body>
</html>
中的隐式迭代破坏了与其他形式的dict迭代的一致性,那将会令人惊讶。)