Python 如何将字典列表转换为仅含指定项的单一字典
实现方法
遍历循环(易调试)
逐一遍历输入列表的每个子项,按需提取字段组装目标字典,逻辑直白,方便后续追加判断、校验等额外逻辑:
I = [{'a':'S1','b':'S2','c':'S3','d':'S4'},{'a':'S5','b':'S6','c':'S7','d':'S8'}] O = {} for item in I: O[(item['a'], item['b'])] = item['d']
运行后输出和示例要求完全匹配:
>>> O {('S1', 'S2'): 'S4', ('S5', 'S6'): 'S8'}
字典推导式(简洁实现)
是Python处理同类字典生成场景的标准简写方式,无需手动初始化空字典和写循环结构,一行代码即可达成相同效果:
I = [{'a':'S1','b':'S2','c':'S3','d':'S4'},{'a':'S5','b':'S6','c':'S7','d':'S8'}] O = {(item['a'], item['b']): item['d'] for item in I}
关键注意点
- 组合键必须使用元组形式:Python字典的键要求为可哈希类型,列表是可变类型,直接用来当键会触发
TypeError类型错误。 - 重复键的覆盖逻辑:如果输入列表中存在a、b取值完全一致的子字典,后出现的子项对应的d值会覆盖同键下之前存储的内容。如果需要保留所有重复键的关联值,可以将字典值初始化为列表,遇到重复键时向列表中追加d值即可。
内容的提问来源于stack exchange,提问作者suresh_chinthy
相关产品推荐
相关产品推荐

