Почему вывод отличается в этом понимании списка? - PullRequest
1 голос
/ 15 апреля 2020

Когда я выполняю следующий код, он работает правильно:

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

вывод:

{0: 'C', 1: 'H', 2: 'E', 3: 'C', 4: 'K'}

, но когда я выполняю это:

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

вывод:

{'C': 3, 'H': 1, 'E': 2, 'K': 4}

почему это не так:

{'C': 1, 'H': 2, 'E': 3,'C' : 4 ,'K': 5}

1 Ответ

0 голосов
/ 15 апреля 2020

Для словаря:

{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)]
...