【问题标题】:Sum values in a dict of sets集合中的值总和
【发布时间】:2017-04-23 12:51:05
【问题描述】:

我有一个可能很简单的任务,我尝试了几种解决方案,但似乎无法弄清楚。

我有一个包含基因名称和相应位置的集合的字典,例如:

gene_nr_snp = {'gene1: {3,9}, gene2: {2,3,1}, gene3: {1}}

我想返回一个带有基因名称和相应总和值的字典。

我尝试了以下方法:

gene_values = {}

for gene, snp in gene_nr_snp.items():
    for i in snp: # iterate the values in each set
        snp_total = 0
        snp_total += i
        gene_values[gene].add(snp_total)

这是返回相同的一组值

【问题讨论】:

    标签: python dictionary sum set


    【解决方案1】:

    您可以使用 dict 理解和 sum() function:

    gene_values = {gene: sum(snp) for gene, snp in gene_nr_snp.items()}
    

    您的尝试失败了,因为您将snp_total 变量设置为0snp 中的每个值,因此无法对任何内容求和。然后您似乎将gene_values[gene] 视为一个集合,但字典开始为空,因此您将获得KeyError。一个工作版本是:

    gene_values = {}
    
    for gene, snp in gene_nr_snp.items():
        snp_total = 0
        for i in snp: # iterate the values in each set
            snp_total += i
        gene_values[gene] = snp_total
    

    但是sum() 函数使内部循环比需要的更冗长;整个循环体可以替换为gene_values[gene] = sum(snp)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 2019-02-13
      • 2010-09-20
      • 1970-01-01
      相关资源
      最近更新 更多