如何在Python中向字典动态添加不存在的键及对应数组值
报错原因
你收到KeyError: 'colors'的核心原因是当前cardict字典中尚未初始化colors键,无法直接对不存在的键调用列表的append方法。
修复方案
方案1:预先判断键是否存在,不存在则初始化
适合仅需处理少量动态键的场景,逻辑直观易懂:
color1 = "red" cardict = { "brand": "Ford", "electric": False, "year": 2201 } if "colors" not in cardict: cardict["colors"] = [] cardict["colors"].append(color1) print(cardict)
方案2:使用字典内置setdefault方法(单键处理首选)
setdefault会自动判断键的存在状态:键不存在时设置指定的默认值,键存在时直接返回对应原值,一行即可完成操作:
color1 = "red" cardict = { "brand": "Ford", "electric": False, "year": 2201 } cardict.setdefault("colors", []).append(color1) print(cardict)
方案3:使用collections.defaultdict(多列表值场景首选)
如果字典内存在大量需要动态追加的列表类型值,可以在初始化时指定默认值类型,后续无需额外判断即可直接操作:
from collections import defaultdict color1 = "red" # 初始化时指定所有未知键的默认值为空列表 cardict = defaultdict(list, { "brand": "Ford", "electric": False, "year": 2201 }) cardict["colors"].append(color1) # 按需可以转为普通字典输出 print(dict(cardict))
内容的提问来源于stack exchange,提问作者Behseini
相关产品推荐
相关产品推荐

