如何为Python字典添加字符串键-列表值对并向值列表追加整数
字典创建新键并向值列表追加元素的解决方案
问题根源
直接访问字典中不存在的键并调用append()会触发KeyError——因为该键未被创建,没有对应的列表可供追加元素。
可行解决方法
1. 手动检查并初始化列表
先判断键是否存在,不存在则创建空列表,再执行追加操作:
from typing import Dict, List diccionary: Dict[str, List[int]] = {} if "key" not in diccionary: diccionary["key"] = [] diccionary["key"].append(2) if "key2" not in diccionary: diccionary["key2"] = [] diccionary["key2"].append(4) diccionary["key2"].append(1) print(diccionary)
执行后输出:{'key': [2], 'key2': [4, 1]}
2. 使用dict.setdefault()简化操作
setdefault()会自动处理键的初始化:若键不存在,用指定值创建并返回;若存在则直接返回对应值,可链式调用append():
from typing import Dict, List diccionary: Dict[str, List[int]] = {} diccionary.setdefault("key", []).append(2) diccionary.setdefault("key2", []).append(4) diccionary.setdefault("key2", []).append(1) print(diccionary)
3. 用collections.defaultdict(推荐方案)
defaultdict在访问不存在的键时,会自动调用工厂函数(此处为list)生成空列表,代码更简洁高效:
from typing import Dict, List from collections import defaultdict diccionary: Dict[str, List[int]] = defaultdict(list) diccionary["key"].append(2) diccionary["key2"].append(4) diccionary["key2"].append(1) # 如需转为普通字典,执行dict(diccionary)即可 print(dict(diccionary))
内容的提问来源于stack exchange,提问作者santosbogo
相关产品推荐
相关产品推荐

