Python - 为空字典添加键值部分

时间:2018-02-02 11:30:15

标签: python dictionary

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

/tmp/contextBroker.log

然后,我将从API中返回一些信息,以便根据某些变量 name 添加到此词典中。

dict = {}

但是,我似乎得到了类似于此的错误*假设str(some_variable1)等于some_variables_name1 = str(some_variable1) dict[some_variables_name1] += [{ 'key1': value1 }] some_variables_name2 = str(some_variable2) dict[some_variables_name2] += [{ 'key2': value2 }]

'foo'

任何专业提示?

6 个答案:

答案 0 :(得分:3)

您必须首先检查dictionary中的“foo”作为关键字。

您可以尝试:

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

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

答案 1 :(得分:3)

@Harsha是对的。

此:

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

会这样做:

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

需要先评估右手边,因此会尝试查找:

dict[some_variables_name1]

哪个会失败。

答案 2 :(得分:3)

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

这样的情况
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})

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

答案 3 :(得分:3)

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

答案 4 :(得分:1)

创建新词典使用:

dict = dict()

当您尝试添加使用的内容时:

+=

没有什么可补充的。你必须先创建值

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

同样建议不要使用dict ..简单的d,这意味着dict是前进的方向。

答案 5 :(得分:0)

如果字典只有一对键和值,我发现使用字典zip会很方便(事先将所有键和值收集在单独的列表中,然后压缩它们以构造一个新字典,就像添加这些字典一样)。

这是我的例子

“我想让{c} = {{a},{b}}”

c = { }
a = {"100": "1.1"}
b = {"200": "1.2"}

# d and e just dummies
d = [ ]
e = [ ]
for item in [a, b]:
    d += list(item)
    e += list(item.values())

c = dict(zip(d,e))
print(c)

"  c  = {'100': '1.1', '200': '1.2'} “