簡體   English   中英

Python - 將鍵值部分添加到空字典

[英]Python - adding key value parts to empty dict

我創建了一個沒有任何鍵的字典實例:值對,標准

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

但是,我似乎收到了與此類似的錯誤 *假設 str(some_variable1) 等於'foo'

KeyError: 'foo'

任何專業提示?

其他答案已經解決了為什么會失敗,這是一個方便的解決方案,如果密鑰不存在,則設置默認值,這樣您的附加就不會失敗。 按照我的閱讀方式,您需要一本字典,其中包含其他字典的列表作為值。 想象一種情況,例如

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

我希望這能回答你的問題。

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

您必須首先檢查dictionary是否存在“foo”作為鍵。

你可以試試:

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

小建議:不要使用dict作為字典變量,因為它是 Python 中的關鍵字

@Harsha 是對的。

這個:

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

會做:

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

Right-Hand-Side 需要首先被評估,所以它會嘗試查找:

dict[some_variables_name1]

哪個會失敗。

創建一個新的字典使用:

dict = dict()

當你嘗試添加一些你使用的東西時:

+=

沒有什么可添加的。 你必須首先創造價值

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

還建議不要使用dict .. 一個簡單的d意味着 dict 是前進的方向。

如果字典只有一對鍵和值,我發現使用字典 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'} “

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM