使用指向同一地址的dict.fromkeys生成的两个数据结构

时间:2018-01-29 18:42:02

标签: python python-2.7 dictionary

我有以下代码:

TESTS = ['C2P', 'FH', 'ACCURACY', 'DUPLICITY']
TESTING_LEVELS = ['IF', 'MF', 'MONO']
ALL_CAMERAS = ['main', 'fisheye_rectified', 'narrow', 'frontCornerLeft', 'frontCornerRight',
       'rearCornerLeft', 'rearCornerRight', 'rear']

SET_A = dict.fromkeys(TESTING_LEVELS, dict.fromkeys(TESTS, dict.fromkeys(ALL_CAMERAS, False)))
SET_B = dict.fromkeys(TESTING_LEVELS, dict.fromkeys(TESTS, dict.fromkeys(ALL_CAMERAS, False)))

由于某种原因,SET_A和SET_B下的字典指向相同的位置。从Python文档中可以看出dict.fromkeys创建了新的词典。为什么会这样?它是否与用于将键映射到值的散列函数有关?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

它们是新的dicts,但列表是对相同列表数据的引用。 看一下copy.deepcopy()