将数据附加到 Python 中的列表字典时出现关键错误

Key Error while appending data into dictionary of list in Python

我正在尝试创建一个字典,其中的键值存储在这样的列表中:

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) 之类的东西来克服这个问题。

推荐阅读:collections.defaultdict

发生错误是因为您在 data['key_value '] 中放置了 space。应该是这样的:data['key_value'].

当您尝试访问字典的任何键时,请确保该键与您的字典中的键相同。

例如,您的字典是:

data={
    'key1': ['val1','val2']
}

如果您尝试访问字典的键,它应该是 data['key1'],而不是 data[' key1']data['key1 ']data[' key1 ']

这是因为你的字典里没有关键字book_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', 'h2', 'h3'], 'key_value2': ['h11', 'h21', 'h31'], 'book_names': ['highlight']}
#data after second operation: {'key_value': ['h1', 'h2', 'h3'], 'key_value2': ['h11', 'h21', 'h31'], 'book_names': ['highlight', 'lowlights']}