python动态创建dict的dict

2024-10-01 07:29:17 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我找不到任何建议来解决我下面的问题,所以如果有人已经回复了,请帮我回答这个问题。在

我试图“动态”创建一个由其他字典组成的字典(最后一个是通过json获取的数据);总之,我要实现的结果是:

{
'D2Key1': {'D1Key1': 'Data11', 'D1Key2': 'Data21', 'D1Key3': 'Data31'}, 
'D2Key2': {'D1Key1': 'Data12', 'D1Key2': 'Data22', 'D1Key3': 'Data32'},
'D2Key3': {'D1Key1': 'Data13', 'D1Key2': 'Data23', 'D1Key3': 'Data33'}
}

我写的代码是:

^{pr2}$

我得到的结果是一个包含三个字典的字典,但是它们都有相同的数据,来自上一次迭代的数据,换句话说,如下所示:

{
'D2Key1': {'D1Key1': 'Data13', 'D1Key2': 'Data23', 'D1Key3': 'Data33'}, 
'D2Key2': {'D1Key1': 'Data13', 'D1Key2': 'Data23', 'D1Key3': 'Data33'},
'D2Key3': {'D1Key1': 'Data13', 'D1Key2': 'Data23', 'D1Key3': 'Data33'}
}

有人能告诉我正确的方向吗? 谢谢


Tags: 数据json字典动态建议data11data23data13
3条回答

是的,如果你这样做的话,你必须在每次通过后重置D1,否则指针保持不变,你将D2中的所有关键点指向同一个D1。以下是如何解决这个问题:

for n in range(3):
    D1 = {}
    D1['D1key1'] = pjson['jsonkey1'][n]['jsonkey4'] # Data1n
    D1['D1key2'] = pjson['jsonkey2'][n]['jsonkey5'] # Data2n
    D1['D1key3'] = pjson['jsonkey3'][n]['jsonkey6'] # Data3n

    D2['%s%d' % ('D2key', n+1)] = D1

这可能是因为您在for循环中引用了相同的dict D1。我认为您必须在每次迭代中创建新的dict。像这样:

for n in range(3):
    D1 = {}
    D1['D1key1'] = pjson['jsonkey1'][n]['jsonkey4'] # Data1n
    D1['D1key2'] = pjson['jsonkey2'][n]['jsonkey5'] # Data2n
    D1['D1key3'] = pjson['jsonkey3'][n]['jsonkey6'] # Data3n

    D2['%s%d' % ('D2key', n+1)] = D1

这是一个常见的错误。D2中的每个键都被分配给同一个对象D1。然后每次迭代都要修改D1。在

相反,您希望在每次迭代中分配不同的字典。在for循环的第一行添加一个D1 = {}。在

相关问题 更多 >