Есть словарь созданный вручную
dch = {0:'0', 1:'1', 2:'2', 3:'3', 4:'4', 5:'5', 6:'6', 7:'7', 8:'8', 9:'9'}
и словарь который создан генератором
dch2 = {x: str(x) for x in range(10)}
в итоге имею два идентичных словаря, содержащих строковые значения
>>> type(dch)
<class 'dict'>
>>> type(dch2)
<class 'dict'>
>>> type(dch[5])
<class 'str'>
>>> type(dch2[5])
<class 'str'>
>>> dch[5]
'5'
>>> dch2[5]
'5'
но одно но, если сделать сравнение со значением из сделаного вручную словаря то все работает, возвращается True, а вот если сравнивать со словарём из генератора False хотя значения сходятся
>>> dch[5] is '5'
True
>>> dch2[5] is '5'
False
Почему так? ведь словари одинаковые получаются и значения в них одного, строкового типа, и сравниваются со строкой.
И если добавить в сгенерируемый словарь вручную значение строковое то оно проходит сравнение коректно, остальные значения которые из генератора нет.
>>> dch2[10] = '10'
>>> dch2[10] is '10'
True
>>> dch2[9] is '9'
False
>>>