Python - 将键值部分添加到空字典

新手上路,请多包涵

我创建了一个没有任何键的字典实例:值对,标准

dict = {}

然后我从一个 API 返回一些信息,根据一些变量 name 添加到这个字典中。

 some_variables_name1 = str(some_variable1)

dict[some_variables_name1] += [{ 'key1': value1 }]

some_variables_name2 = str(some_variable2)

dict[some_variables_name2] += [{ 'key2': value2 }]

但是,我似乎收到了与此类似的错误 *Assuming that str(some_variable1) is equal to 'foo'

 KeyError: 'foo'

任何专业提示?

原文由 GCien 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 428
2 个回答

其他答案已经解决了为什么会失败,这是一个方便的解决方案,如果密钥不存在则设置默认值,这样您的附加就不会失败。我读它的方式,你想要一个字典,其中包含其他字典的列表作为值。想象这样的情况

somedict = {}
somevar = 0
somevar_name = str(somevar)

key1 = "oh"
value1 = 1

你可以做

somedict.setdefault(somevar_name,[]).append({key1,value1})

这将评估为

{‘0’: [{‘哦’, 1}]}

换句话说,更改此类行

somedict[some_variables_name] += [{ 'somekey': somevalue }]

进入:

 somedict.setdefault(some_variables_name,[]).append({'somekey':somevalue})

我希望这回答了你的问题。

原文由 Banana 发布,翻译遵循 CC BY-SA 3.0 许可协议

pythonic 解决方案是为你的字典设置默认值。在我看来, collections.defaultdict 是最好的选择。

另外,请不要使用也是类的变量名。我在下面调用了字典 d

 from collections import defaultdict

d = defaultdict(list)

some_variables_name1 = str(some_variable1)
d[some_variables_name1].append({'key1': value1})

some_variables_name2 = str(some_variable2)
d[some_variables_name2].append({'key2': value2})

原文由 jpp 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏