Python 3.x 为什么此列表中的输出不同?

Python 3.x 为什么此列表中的输出不同?,python-3.x,list,dictionary-comprehension,Python 3.x,List,Dictionary Comprehension,当我执行以下代码时,它工作正常: hassam="CHECK" list1={i:hassam[i] for i in range(5)} list1 输出: {0: 'C', 1: 'H', 2: 'E', 3: 'C', 4: 'K'} {'C': 3, 'H': 1, 'E': 2, 'K': 4} 但当我执行此命令时: hassam="CHECK" list1={hassam[i]:i for i in range(5)} list1 输出: {0: 'C', 1: 'H', 2

当我执行以下代码时,它工作正常:

hassam="CHECK"
list1={i:hassam[i] for i in range(5)}
list1
输出:

{0: 'C', 1: 'H', 2: 'E', 3: 'C', 4: 'K'}
{'C': 3, 'H': 1, 'E': 2, 'K': 4}
但当我执行此命令时:

hassam="CHECK"
list1={hassam[i]:i for i in range(5)}
list1
输出:

{0: 'C', 1: 'H', 2: 'E', 3: 'C', 4: 'K'}
{'C': 3, 'H': 1, 'E': 2, 'K': 4}
为什么不是这样:

{'C': 1, 'H': 2, 'E': 3,'C' : 4 ,'K': 5}
对于字典:

{0: 'C', 1: 'H', 2: 'E', 3: 'C', 4: 'K'} 
作为键的数字不同。
要不是字典

{'C': 1, 'H': 2, 'E': 3,'C' : 4 ,'K': 5}
python不允许重复键。因此,密钥将用新值更新。
在这里,它是这样显示的,因为字典不能有具有不同值的相同键。因此,请尝试使用
list1
作为如下列表:

list1=[{hassam[i]:i} for i in range(5)]
这将使:

[{'C': 0}, {'H': 1}, {'E': 2}, {'C': 3}, {'K': 4}]
或元组而不是单个词典:

list1=[(hassam[i],i) for i in range(5)]
对于字典:

{0: 'C', 1: 'H', 2: 'E', 3: 'C', 4: 'K'} 
作为键的数字不同。
要不是字典

{'C': 1, 'H': 2, 'E': 3,'C' : 4 ,'K': 5}
python不允许重复键。因此,密钥将用新值更新。
在这里,它是这样显示的,因为字典不能有具有不同值的相同键。因此,请尝试使用
list1
作为如下列表:

list1=[{hassam[i]:i} for i in range(5)]
这将使:

[{'C': 0}, {'H': 1}, {'E': 2}, {'C': 3}, {'K': 4}]
或元组而不是单个词典:

list1=[(hassam[i],i) for i in range(5)]

字典中不能有两个重复的键,最后一个winsFirst示例可以写成
dict(enumerate(hassam))
。字典中不能有两个重复的键,最后一个winsFirst示例可以写成
dict(enumerate(hassam))