我正在尝试创建一个 python 字典,其中包含一个键集合,每个键有多个值。我希望能够向字典中的现有键添加值。我已经审查了有关此问题的多个线程,但我还没有找到直接适用的线程。
这是密钥的格式
{ "key1":{"value1-1 Attr": "value1-1","value1-2 Attr": "value1-2","value1-3 Attr": "value1-3", "Key2":{"value2-1 Attr": "value2-1","value2-2 Attr": "value2-2","value2-3 Attr": "value2-3",{} }
Run Code Online (Sandbox Code Playgroud)
我希望能够添加新密钥并增加现有密钥的值,因此我尝试了以下 Python 代码:
message1 = {"value1-4 Attr": "value1-4","value1-5 Attr": "value1-6","value1-7 Attr": "value1-7"}
if key in dictionary:
dictionary[key].append(message1)
else:
dictionary[key] =message1
Run Code Online (Sandbox Code Playgroud)
计划稍后将字典写入 json 文件。问题是我不断收到此错误,我不知道如何解决:
“dict”对象没有属性“append”
我该如何修复该错误以及向现有密钥添加新值的最佳方法是什么?
TL;DR:您可以将append值分配给 Python 列表(或数组),但不能分配给字典。
key: value到字典中如果键已在字典中,则语法dictionary[key] = message1将更改现有值dictionary[key]to ;如果键尚未在字典中,message则创建键值对。key: message1
所以而不是这个...
if key in dictionary:
dictionary[key].append(message1)
else:
dictionary[key] = message1
Run Code Online (Sandbox Code Playgroud)
...你会用这个:
dictionary[key] = message1
Run Code Online (Sandbox Code Playgroud)
key: value用不同的对更新字典如果你想用另一个字典中的值更新一个字典,你可以这样做:
dictionary_1.update(dictionary_2)
Run Code Online (Sandbox Code Playgroud)
这会dictionary_1使用 中每个键的值进行就地修改dictionary_2。
如果某个键不存在于 中dictionary_1,但存在于 中dictionary_2,则将基于update进行修改,以便 包含键值对。dictionary_1dictionary_2dictionary_1key: dictionary_2[key]
或者,如果 和 中都存在某个键dictionary_1,dictionary_2则将用 中的值update覆盖现有值。dictionary_1[key]dictionary_2[key]
所以而不是这个...
if key in dictionary:
dictionary[key].append(message1)
else:
dictionary[key] = message1
Run Code Online (Sandbox Code Playgroud)
...你会用这个:
dictionary[key].update(message1)
Run Code Online (Sandbox Code Playgroud)
仅当 的值为dictionary[key]字典时才有效。
如果你想让一个键有多个值,你可以将多个值存储在一个列表中:
dictionary = {key: [value_1, value_2, value_3]}
Run Code Online (Sandbox Code Playgroud)
然后您可以将另一个值附加到列表中:
dictionary[key].append(value_4)
Run Code Online (Sandbox Code Playgroud)
结果:
dictionary = {key: [value_1, value_2, value_3, value_4]}
Run Code Online (Sandbox Code Playgroud)
所以而不是这个...
if key in dictionary:
dictionary[key].append(message1)
else:
dictionary[key] = message1
Run Code Online (Sandbox Code Playgroud)
...你会用这个:
if key in dictionary:
dictionary[key].append(message1)
else:
dictionary[key] = [message1]
Run Code Online (Sandbox Code Playgroud)
如果key已存在于 中dictionary,则将其追加message到 中dictionary[key]。否则,它会创建一个新的单项列表[message1]作为 的值dictionary[key]。
但是,dictionary[key].append(message1)仅当 的值为dictionary[key]列表时才有效,而当值为字典时则无效。
| 归档时间: |
|
| 查看次数: |
14334 次 |
| 最近记录: |