我需要为嵌套字典中的每个项添加一个值增加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 loop
的最后一行添加更多图层,我会收到追溯错误:
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
我尝试了各种不同的方式列出嵌套项目,但没有快乐。任何人都可以帮助我吗?
答案 0 :(得分:8)
问题是mydict
不仅仅是嵌套字典的集合。它也包含一个列表。打破定义有助于澄清内部结构:
dictlist = [{'key1':'value1','key2':'value2'},
{'key1':'value3','key2':'value4'}]
resultdict = {'result':dictlist}
mydict = {'a':resultdict}
因此,要访问最里面的值,我们必须这样做。向后工作:
mydict['a']
返回resultdict
。然后这个:
mydict['a']['result']
返回dictlist
。然后这个:
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)
答案 1 :(得分:0)
我不完全确定你要做什么,但我认为itertools.count
可以在这里提供帮助。
>>> c = itertools.count()
>>> c.next()
0
>>> c.next()
1
>>> c.next()
2
>>> c.next()
3
......等等。
使用此功能,您可以继续增加要在dict
中使用的值
希望这有帮助