我有这个代码在Python中运行:
squares = {1:1,2:3,3:"error",4:16,}
squares[3]=9
squares[8] =64
print(squares)
我得到的结果是:
{8: 64, 1: 1, 2: 3, 3: 9, 4: 16}
当我尝试将8
替换为5
时,如下面的代码所示:
squares = {1:1,2:3,3:"error",4:16,}
squares[3]=9
squares[5] =64
print(squares)
我得到了以下结果:
{1: 1, 2: 3, 3: 9, 4: 16, 5: 64}
有人可以解释为什么在第一段代码中元素是在开头添加的,而在最后一段中它是在字典末尾添加的吗?
答案 0 :(得分:1)
字典未订购。元素的顺序并不重要。
答案 1 :(得分:1)
答案 2 :(得分:1)
正如之前的答案所指出的那样,字典中的项目是无序的。如果您想要打印“方块”的内容。按键排序的字典,你可以这样做:
print(sorted(squares))
这会将字典的内容打印为(键,值)对,按键排序:
[(1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (8, 64)]
答案 3 :(得分:1)
字典的元素以确定的顺序显示。然而,与人们的期望相反,它们不是按字典顺序排列的。
您可以使用方法dict.items()
和内置函数sorted()
来显示字典的内容,其中包含按字典顺序排列的键或值:
>>> somedict = {7:'a', 6:'c', 8:'b'}
>>> print(somedict)
{8: 'b', 6: 'c', 7: 'a'}
>>> print(sorted(somedict.items()))
[(6, 'a'), (7, 'c'), (8, 'b')]
>>> print(sorted(somedict.items(), key=lambda x: x[1]))
[(7, 'a'), (8, 'b'), (6, 'c')]
答案 4 :(得分:0)
这也常常让我起初作为初学者。与列表不同,字典不是有序的。换句话说,您不能依赖于打印字典内容时键/值对的顺序。如果您确实需要订购它们,可以使用collections.OrderedDict。