【问题标题】:Python: Sum of certain values of a dictionaryPython:字典某些值的总和
【发布时间】:2018-10-19 09:08:21
【问题描述】:
dict = {'A': 71.07884,
    'B': 110
    'C': 103.14484,
    'D': 115.08864,
    'E': 129.11552,
    'F': 147.1766,
   }

name = "ABC"

for character in name:
    for key, value in dict.items():
        if key == character:
            print(value)

我有一个字典字典和一个字符串名称。现在我想将 dict 的值与字符串名称的字符相加。

通过我的解决方案,我得到了值 71.07884, 110, 103.14484 但我如何才能对这些值求和。

如果我尝试 print(sum(value)),我会得到:TypeError: 'float' object is not iterable。

我是 python 新手 :)

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    您将收到该错误,因为 value 根据其迭代器更改。为了找到您需要存储的总和并将值添加到另一个变量,然后调用sum() 或者您可以将其添加到新变量。

    sum() 所做的是获取一个列表并遍历它。在您的代码中,它所做的只是将循环中的当前值传递给 1 个值。

    示例:注意(有很多方法可以做到这一点。)

    name = "ABC"
    sum = 0
    for character in name:
        for key, value in dict.items():
            if key == character:
                print(value)
                sum = value + sum
    
    print(sum) 
    

    【讨论】:

      【解决方案2】:

      您可以这样做 - 首先初始化一个空列表,然后每次在循环中获取值时,append 将其添加到列表中。您将获得一个列表[71.07884, 110, 103.14484],然后您可以对其求和。

      dict = {'A': 71.07884,
          'B': 110,
          'C': 103.14484,
          'D': 115.08864,
          'E': 129.11552,
          'F': 147.1766,
         }
      
      name = "ABC"
      values = []
      for character in name:
          for key, value in dict.items():
              if key == character:
                  values.append(value)
      sum(values)
      

      输出:

      sum(values)
      Out[6]: 284.22368
      

      【讨论】:

        【解决方案3】:

        你可以这样做:

        mydict = {'A': 71.07884,
            'B': 110,
            'C': 103.14484,
            'D': 115.08864,
            'E': 129.11552,
            'F': 147.1766,
           }
        
        name = "ABC"
        
        sum(value for key, value in mydict.items() if key in name)
        
        # 284.22368
        

        请注意,我将您的字典重命名为 mydict,因为 dict 是 Python 内置函数,您不应将其用作变量名。

        【讨论】:

          【解决方案4】:

          我认为你需要这个:

          list_name = "ADF"    
          sum([value for key, value in dict.items() if key in list_name])
          

          【讨论】:

          • 使用sum时无需列清单:sum(value for key, value in dict.items() if key in list_name)
          猜你喜欢
          • 1970-01-01
          • 2012-07-26
          • 1970-01-01
          • 2017-07-09
          • 1970-01-01
          • 2018-04-18
          • 1970-01-01
          • 1970-01-01
          • 2016-05-28
          相关资源
          最近更新 更多