如何用字典推导式实现基于列表匹配的字典值更新
用字典推导式实现字典值的条件更新
需求回顾
根据指定列表中的键更新字典:
- 若字典的键存在于目标列表中,对应值加1
- 若不存在,对应值减1
普通循环实现(参考)
original_dict = {'a': 2, 'b': 3, 'c': 1} target_keys = ['a', 'c'] for key in original_dict: original_dict[key] += 1 if key in target_keys else -1
字典推导式实现方案
字典推导式可以直接生成更新后的新字典,写法如下:
original_dict = {'a': 2, 'b': 3, 'c': 1} target_keys = ['a', 'c'] # 生成新的更新后字典 updated_dict = { key: value + 1 if key in target_keys else value - 1 for key, value in original_dict.items() }
如果需要直接修改原字典,可结合update()方法:
original_dict.update({ key: value + 1 if key in target_keys else value - 1 for key, value in original_dict.items() })
常见语法错误排查
- 未遍历键值对:如果只遍历字典的键(
for key in original_dict),会无法获取对应值,导致表达式报错 - 三元表达式不完整:字典推导式里的条件表达式必须包含
if和else分支,不能只写if(否则会被当成推导式的过滤条件,而非值的计算逻辑) - 条件逻辑写反:误将
value -1放在if分支,导致逻辑颠倒
内容的提问来源于stack exchange,提问作者Learn Hadoop
相关产品推荐
相关产品推荐

