【问题标题】:Replace values in a dictionary of NumPy arrays and single numbers with sums用总和替换 NumPy 数组和单个数字字典中的值
【发布时间】:2020-09-10 06:13:25
【问题描述】:

我有一本字典surnames

import numpy as np

surnames = {
    'Sophie': np.array([138, 123]), 
    'Marie': np.array([126, 1, 50, 1]), 
    'Maximilian': np.array([111, 74]),
    'Alexander': 87, 
    'Maria': np.array([85, 15, 89, 2]), 
    'Paul': np.array([70, 59]), 
    'Katharina': 69, 
    'Felix': np.array([61, 53]), 
    'Anna': np.array([57, 58]), 
    'Ben': np.array([49, 47])
}

我想对所有数组求和并将它们保存在同一个字典中,以便总和替换数组:

{
    'Sophie': 261,
    'Marie': 178,
    'Maximilian': 185,
    'Alexander': 87,
    'Maria': 191,
    'Paul': 129,
    'Katharina': 69,
    'Felix': 114,
    'Anna': 115,
    'Ben': 96
}

我试过这个:

new_dict = dict()
for k, v in surnames:
    new_dict.update({k:sum(v)})

我认为这不起作用,因为它只对同一键的单个值求和?

我也试过这个:

data = list(surnames.values())
cl_surnames = np.array(data)
cl_surnames = np.sum(cl_surnames, 0)

我明白为什么这也不起作用,但我还能做什么?

【问题讨论】:

  • for k, v in surnames 这将引发错误。试试这个for k, v in surnames.items()

标签: python numpy dictionary


【解决方案1】:

您可以使用字典理解来做到这一点:

di = {key:np.sum(value) for (key,value) in di.items()}

但是修复 cmets 中指出的错误也可以完成这项工作。

【讨论】:

    【解决方案2】:

    你可以使用字典理解:

    x = {key: np.sum(value) for key, value in dict_.items()}
    

    【讨论】:

      【解决方案3】:

      你可以试试:

      new_dict = dict()
      for k, v in dict_name.items():
          if not isinstance(v, int):
            new_dict[k] = sum(v)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-10
        • 2016-02-02
        • 1970-01-01
        • 2012-09-29
        • 2014-07-03
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        相关资源
        最近更新 更多