2014-01-30 51 views
0

我只想在字典更新1个字典值,但它似乎更新2个键的结合:如何更新Python中的重叠键嵌套字典?

Y = dict(zip(['A', 'B'], [dict.fromkeys(range(2010,2014), [])] * 2)) 
zz = {'A':{2012: [(666,999)], 2013: []}, 'B':{2010:[], 2011:[(666,999)]}} 

Y['A'][2012] = zz['A'][2012] 

结果:

{'A': {2010: [], 2011: [], 2012: [(666, 999)], 2013: []}, 'B': {2010: [], 2011: [], 2012: [(666, 999)], 2013: []}} 

我只想要“A更新2012 ”。

我是一名初学者的python程序员。

感谢

+0

你为什么分配两次'zz'? – user2357112

+0

对不起,这是一个错字 – CrazyIntent

回答

2

这一部分:

[dict.fromkeys(range(2010,2014), [])] * 2 

创建一个列表,其中两个元素都是相同的dict对象。而且,在这个单词中,所有4个值都是相同的列表对象。

这一部分:

Y['A'][2012] = zz['A'][2012] 

需要存储在zz['A'][2012]列表对象,使Y['A'][2012]也请参阅该列表。

您可以通过以下操作使具有自主列表独立类型的字典:

Y = {key1: {key2: [] for key2 in range(2010, 2014)} for key1 in ['A', 'B']} 

由于我不知道你想与Y['A'][2012] = zz['A'][2012]做什么,我不能提供一个解决方案出现。

+0

谢谢!我现在感到非常愚蠢 – CrazyIntent