Python-向空di添加键值部分

2024-04-25 08:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

dict = {}

然后,我将根据一些变量name返回要添加到此字典的API中的一些信息。

some_variables_name1 = str(some_variable1)

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

some_variables_name2 = str(some_variable2)

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

但是,假设str(一些变量1)等于'foo',我似乎得到了一个与此类似的错误:

KeyError: 'foo'

有专业的建议吗?


Tags: 实例nameapi信息标准dictionary字典foo
3条回答

pythonic解决方案是为字典设置默认值。在我看来,^{}是最好的选择。

另外,请不要使用同样是类的变量名。我给下面的字典打了电话。

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})

您必须首先检查dictionary中是否存在作为键的“foo”。

您可以尝试:

if "foo" in dict_name:
    dict_name.append("new_append")
else:
    dict_name["foo"] = ["first entry"]

小建议:不要使用dict作为字典变量,因为它在Python中是关键字

其他的答案已经说明了为什么会失败,这里有一个方便的解决方案,如果密钥不存在,则设置默认值,这样您的追加就不会失败。 我读的时候,你想要一本其他字典列表作为值的字典。想象一种情况,例如

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

key1 = "oh"
value1 = 1

你可以的

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

这将评估为

{'0': [{'oh', 1}]}

换言之,改变这类行

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

进入:

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

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

相关问题 更多 >