[英]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.