Python如何删除键符合A+两位数字格式的字典元素
Python删除符合正则规则的字典键实现方案
推荐两种可行写法,可避免遍历字典时修改结构导致的报错:
方法1:字典推导式生成新字典(更安全,推荐)
不需要修改原字典的场景用这个,代码最简洁:
import re # 待处理字典,示例中无引号的A12为笔误,此处统一为字符串键 d = {'A34': 83, 'B32': 70, 'A44': 66, 'A12': 47, 'B90': 71} # 仅保留不符合Axx格式的键,生成新字典 new_d = {k: v for k, v in d.items() if not re.match(r'^A\d{2}$', str(k))}
说明:加str(k)是兼容非字符串类型的键,正则前加r标记为原始字符串,不需要重复转义反斜杠
方法2:直接修改原字典
如果需要在原有字典上修改,先收集待删除的键再批量删除:
import re d = {'A34': 83, 'B32': 70, 'A44': 66, 'A12': 47, 'B90': 71} # 先把所有符合删除规则的键存到独立列表中 to_delete = [k for k in d if re.match(r'^A\d{2}$', str(k))] # 遍历列表删除对应键,不会触发字典遍历修改报错 for k in to_delete: del d[k]
注意事项
不要直接在遍历字典的循环中删除键,字典大小变更会触发RuntimeError: dictionary changed size during iteration异常。
内容的提问来源于stack exchange,提问作者kitchen800
相关产品推荐
相关产品推荐

