问题描述
data={
"key_value":["h1","h2","h3"],"key_value2":["h11","h21","h31"],}
data[book_name].append(highlight)
但这给了我一个关键错误 KeyError: 'Key_value '
为什么会发生这种情况?
解决方法
就问题而言,可以使用 data.setdefault(book_name,[]).append(highlight)
。如果键不存在,它将创建一个新键,并使用一个空列表作为值,否则您将获得可以附加到的现有键的列表。
注意:如果您的键带有尾随空格,这可能会导致“意外”行为。例如:data[' key']
与 data['key ']
。您可以使用诸如 data.setdefault(book_name.strip(),[]).append(highlight)
之类的东西来解决这个问题。
发生错误是因为您在 data['key_value ']
中放置了一个空格。应该是这样的:data['key_value']
。
当您尝试访问字典的任何键时,请确保该键与您的字典中的键相同。
例如,您的字典是:
data={
'key1': ['val1','val2']
}
如果您尝试访问字典的键,它应该是 data['key1']
,而不是 data[' key1']
或 data['key1 ']
或 data[' key1 ']
。
这是因为您的字典中没有名为 book_list 的键。您可以将现有键的 value_list 附加到 value_list,例如您的“key_value2”,如下所示:
data={"key_value":["h1","h2","h3"],"key_value2":["h11","h21","h31"]}
data["key_value2"].append("highlight")
print(data)
#prints: {'key_value': ['h1','h2','h3'],'key_value2': ['h11','h21','h31','highlight']}
如果您想在字典中创建一个全新的 key_value 对,然后将更多值附加到值列表中,您可以这样做:
#create a new key,the value for which is a list:
data["book_names"] = ["highlight"]
#append another value to the value list for existing key:
data['book_names'].append("lowlights")
#Output:
#data after first operation: {'key_value': ['h1','h31'],'book_names': ['highlight']}
#data after second operation: {'key_value': ['h1','book_names': ['highlight','lowlights']}