我堆叠的东西非常简单,但我找不到正确的方法。我有一本像这样的字典:
mydic= {'a': {'mylist':[..,..,..]}, 'b': {'mylist':[..,..,..]}}
我正在尝试遍历mylist
并使用函数的结果创建一个新的子字典。
for i in mydic:
for j in mydic[i]['mylist']:
mydic[i]['thenewkey'][j] = myfunction(j)
查找词典将是这样的:
mydic= {'a': {'mylist':[..,..,..], 'thenewkey':{'..':'..', '..':'..'}}, 'b': {'mylist':[..,..,..],'thenewkey':{'..':'..', '..':'..'}}}
但是当我运行代码时,我在thenewkey
上有一个关键错误。有什么想法吗?
答案 0 :(得分:3)
在分配给mydic[i]['thenewkey']
之前,您必须先创建mydic[i]['thenewkey'][j]
。
答案 1 :(得分:1)
如前所述,您必须先创建thenewkey
条目,然后才能向其中添加项目,即您必须将mydic[i]['thenewkey'] = {}
添加到外部循环中。你可以使用defaultdict(dict)
让Python自动插入缺失的条目,但由于你同时拥有list
和dict
条目,这似乎不是一个好主意
也就是说,使用dictionary comprehension会使它更短一些,恕我直言更可读:
for i in mydic:
mydic[i]['thenewkey'] = {j: myfunction(j) for j in mydic[i]['mylist']}