Python词典中的Keyerror

时间:2014-04-04 14:11:38

标签: python

我堆叠的东西非常简单,但我找不到正确的方法。我有一本像这样的字典:

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上有一个关键错误。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

在分配给mydic[i]['thenewkey']之前,您必须先创建mydic[i]['thenewkey'][j]

答案 1 :(得分:1)

如前所述,您必须先创建thenewkey条目,然后才能向其中添加项目,即您必须将mydic[i]['thenewkey'] = {}添加到外部循环中。你可以使用defaultdict(dict)让Python自动插入缺失的条目,但由于你同时拥有listdict条目,这似乎不是一个好主意

也就是说,使用dictionary comprehension会使它更短一些,恕我直言更可读:

for i in mydic:
    mydic[i]['thenewkey'] = {j: myfunction(j) for j in mydic[i]['mylist']}