【发布时间】:2020-05-28 22:34:57
【问题描述】:
代码 sn-ps 值一千字,所以在这里:
# Creation of data_dict1
data_types = ('abnormal', 'normal')
data_dict1 = dict.fromkeys(data_types, {0: {}, 1: {}})
# Creation of data_dict2
data_dict2 = data_dict2 = {'abnormal': {0: {}, 1: {}}, 'normal': {0: {}, 1: {}}}
# Check
print(data_dict1)
print(data_dict2)
print(data_dict1 == data_dict2)
>>> {'abnormal': {0: {}, 1: {}}, 'normal': {0: {}, 1: {}}}
>>> {'abnormal': {0: {}, 1: {}}, 'normal': {0: {}, 1: {}}}
>>> True
如您所见,嵌套字典 data_dict1 和 data_dict2 是相同的,无论其创建方法如何。 但是当我以同样的方式赋值时,我会得到不同的结果:
data_dict1['abnormal'][0]['result'] = 'abnormal_0'
data_dict1['abnormal'][1]['result'] = 'abnormal_1'
data_dict1['normal'][0]['result'] = 'normal_0'
data_dict1['normal'][1]['result'] = 'normal_1'
data_dict2['abnormal'][0]['result'] = 'abnormal_0'
data_dict2['abnormal'][1]['result'] = 'abnormal_1'
data_dict2['normal'][0]['result'] = 'normal_0'
data_dict2['normal'][1]['result'] = 'normal_1'
# Check
print(data_dict1)
print(data_dict2)
print(data_dict1 == data_dict2)
>>> {'abnormal': {0: {'result': 'normal_0'}, 1: {'result': 'normal_1'}}, 'normal': {0: {'result': 'normal_0'}, 1: {'result': 'normal_1'}}}
>>> {'abnormal': {0: {'result': 'abnormal_0'}, 1: {'result': 'abnormal_1'}}, 'normal': {0: {'result': 'normal_0'}, 1: {'result': 'normal_1'}}}
>>> False
data_dict1['abnormal'][0]['result'] 和 data_dict1['abnormal'][0]['result'] 的值为'normal_0' 和 'normal_1',而不是应有的 'abnormal_0' 和 'abnormal_1'是。为什么会这样?
【问题讨论】:
标签: python python-3.x dictionary key dictionary-comprehension