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

2024-06-10 16:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

data={
    "key_value":["h1","h2","h3"],
    "key_value2":["h11","h21","h31"],
}

在将元素添加到此DICT列表时,我使用此函数:

data[book_name].append(highlight)

但这给了我一个关键错误KeyError: 'Key_value ' 为什么会这样


Tags: key元素列表data字典valueh2h1
3条回答

这是因为在你的字典里没有一个叫做book_list的键。您可以附加到现有键的值列表,如“键值2”,如下所示:

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

如果要在字典中创建一个全新的键值对,然后将更多值附加到值列表中,可以这样做:

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

如问题所示data.setdefault(book_name, []).append(highlight)可以使用。如果键不存在,它将创建一个新键,值为空列表,否则您将获得可附加到的现有键的列表

注意:如果您有尾随空格的键,这可能会导致“意外”行为。例如:data[' key']vsdata['key ']。您可以使用类似data.setdefault(book_name.strip(), []).append(highlight)的方法来克服这个问题

建议案文:collections.defaultdict

发生错误的原因是您在data['key_value ']中放置了一个空格。它应该是这样的:data['key_value']

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

例如,你的字典是:

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

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

相关问题 更多 >