Python如何对字典中相同键对应的数值求和生成新字典
实现方案
首先要注意:Python原生字典不允许存在重复键,你示例中写的Dict1直接在Python中定义时,后面的重复键会直接覆盖前面的同名键值,无法保留所有待统计数据,因此需要先把所有键值对存储为元组列表再进行求和计算。
准备待统计数据
将你给出的所有键值对整理为元组列表格式:
data = [ ("AAT", 2), ("CCG", 1), ("ATA", 5), ("GCG", 7), ("CGC", 2), ("TAG", 1), ("GAT", 0), ("AAT", 3), ("CCG", 2), ("ATG", 5), ("GCG", 3), ("CGC", 7), ("TAG", 0), ("GAT", 0) ]
实现方法1:使用collections.defaultdict(简洁写法)
from collections import defaultdict dict2 = defaultdict(int) for key, val in data: dict2[key] += val # 转换为普通字典(可选) dict2 = dict(dict2) print(dict2)
实现方法2:不依赖额外库,用原生字典实现
dict2 = {} for key, val in data: if key in dict2: dict2[key] += val else: dict2[key] = val print(dict2)
输出结果
两种方法的输出均为:{'AAT': 5, 'CCG': 3, 'ATA': 5, 'GCG': 10, 'CGC': 9, 'TAG': 1, 'GAT': 0, 'ATG': 5}
如果你不需要ATG键,可以手动删除该键值对即可匹配你给出的预期Dict2结构。
内容的提问来源于stack exchange,提问作者diya09
相关产品推荐
相关产品推荐

