python - 在 python 中向嵌套字典添加新键

标签 python dictionary

我需要为嵌套字典中的每个项目添加一个值增加 1 的键。我一直在尝试使用 dict['key']='value' 语法,但无法使其用于嵌套字典。我敢肯定这是一个非常简单的。

我的字典:

mydict={'a':{'result':[{'key1':'value1','key2':'value2'},
                        {'key1':'value3','key2':'value4'}]}}

这是将键添加到字典主要部分的代码:

for x in range(len(mydict)):
        number = 1+x
        str(number)
        mydict[d'index']=number

print mydict
  #out: {d'index':d'1',d'a'{d'result':[...]}}

我想将新的键和值添加到方括号内的小字典中:

{'a':{'result':[{'key1':'value1',...,'index':'number'}]}}

如果我尝试在 for 循环 的最后一行添加更多层,我会收到回溯错误:

Traceback (most recent call last):
  File "C:\Python27\program.py", line 34, in <module>
    main()
  File "C:\Python27\program.py", line 23, in main
    mydict['a']['result']['index']=number
TypeError: list indices must be integers, not unicode

我已经尝试了各种不同的方式来列出嵌套项目,但没有任何乐趣。有人可以帮我吗?

最佳答案

问题是 mydict 不仅仅是嵌套字典的集合。它还包含一个列表。分解定义有助于理清内部结构:

dictlist = [{'key1':'value1','key2':'value2'},
            {'key1':'value3','key2':'value4'}]
resultdict = {'result':dictlist}
mydict = {'a':resultdict}

所以要访问最里面的值,我们必须这样做。向后工作:

mydict['a'] 

返回resultdict。然后这个:

mydict['a']['result']

返回字典列表。然后这个:

mydict['a']['result'][0]

返回 dictlist 中的第一项。最后,这个:

mydict['a']['result'][0]['key1']

返回 'value1'

所以现在您只需修改您的 for 循环以正确迭代 mydict。可能有更好的方法,但这是第一种方法:

for inner_dict in mydict['a']['result']: # remember that this returns `dictlist`
    for key in inner_dict:
        do_something(inner_dict, key)

关于python - 在 python 中向嵌套字典添加新键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371691/

相关文章:

python - 如何在没有任何 CAN 硬件的 2 台 Linux 机器之间发送和接收 CAN 消息?

Python Scapy nfqueue

scala - 如何在scala的 map 中找到(键,值)对的数量?

ms-access - 字典使所有键的值等于最近的键/值相加

javascript - javascript 命令行参数和映射

python - 在 python 中创建模块范围的记录器是好的设计吗?

python - - 在Python中通过MySQL的计数找到top x?

python - 将 str 元组列表转换为 int 元组列表?

python - 字典不识别浮点键

C#龙书(词法分析)如何处理字面量