了解元组和列表的字典分配

时间:2018-12-25 16:56:46

标签: python python-3.x

我是python初学者,最近我了解了字典分配。 这就是我正在尝试的

my_list = [[1, 4], [2, 2],[5,1]]
lists = dict(my_list)
print(lists)   # Prints {1:4,2:2,5:1}

my_list = [(1, 4), (2, 2),(5,1)]
lists = dict(my_list)
print(lists)   # Prints {1:4,2:2,5:1}

my_list = [[1, 4], (2, 2),{5,1}]
lists = dict(my_list)
print(lists)   # Prints {1:5,2:2}

我无法解释为什么我们在示例3中得到这个奇怪的答案。 请帮助和解释。

1 个答案:

答案 0 :(得分:4)

{5, 1}set,因此固有地无序。在某种程度上取决于您的Python实现,它反复地迭代为1->55->1。如果您遇到第一种情况,则您的dict实例化等效于:

lists = dict([(1, 4), (2, 2), (1, 5)])

或更冗长而明显

lists = {}
lists[1] = 4
lists[2] = 2
lists[1] = 5  # overrides first binding of 1

由于dict中没有重复的密钥,因此重复密钥的最后一个密钥绑定“获胜”。