На мой взгляд, использование соответствующих библиотек для всех основных вещей, в первую очередь, является ключом для написания масштабируемого и легко понятного кода. Мне нравится ваш ответ и тонкая комбинация распаковки, почтового индекса, суммирования и понимания списка. Это отлично подходит для начинающих Python, чтобы понять языковые примитивы и структуру. Я бы сказал, однако, что (в зависимости от варианта использования!) Варианты библиотеки должны быть предпочтительными.

те предположим, что я создал dict, состоящий из n ключей. Каждый ключ отображается в список целых чисел одинаковой длины. То, что я хочу сделать сейчас, это новый список, который представляет сумму целых чисел в каждой точке в списках dict. Проиллюстрировать:

my_dict = {'a': [1, 2, 3, 4], 'b': [2, 3, 4, 5], 'c': [3, 4, 5, 6]}

total_sum_list = []

for key in my_dict.keys():
    total_sum_list += ###some way of adding the numbers together

Ожидаемый результат:

total_sum_list = [6,9,12,15]

Как показано выше, я не уверен, как настроить это для цикла, чтобы я мог создать список, какtotal_sum_list, Я пытался составить списки, но мои усилия пока не увенчались успехом. Какие-либо предложения?

Ответы на вопрос(2)

озможность использования соответствующей библиотеки для более общей / сложной функциональности.

NumPy: общие научные вычисления
import numpy as np

my_dict = {'a': [1, 2, 3, 4], 'b': [2, 3, 4, 5], 'c': [3, 4, 5, 6]}

arr = np.array(list(d.values()))
# [[1 2 3 4]
#  [2 3 4 5]
#  [3 4 5 6]]

arr.sum(axis=0)
# [ 6  9 12 15]
Pandas: инструментарий для анализа данных
import pandas as pd

my_dict = {'a': [1, 2, 3, 4], 'b': [2, 3, 4, 5], 'c': [3, 4, 5, 6]}

df = pd.DataFrame(my_dict)
#    a  b  c
# 0  1  2  3
# 1  2  3  4
# 2  3  4  5
# 3  4  5  6

df.sum(axis=1)
# 0     6
# 1     9
# 2    12
# 3    15
 Jean-François Fabre21 сент. 2017 г., 21:19
да, совершенно другой, но действительный подход. использование этих тяжеловесов полезно, когда данные большие. В этих случаях производительность выше, чем у обычного python (в небольших случаях время, затрачиваемое на импорт модулей, убивает радость :))
 Michael Hoff22 сент. 2017 г., 01:09
На мой взгляд, использование соответствующих библиотек для всех основных вещей, в первую очередь, является ключом для написания масштабируемого и легко понятного кода. Мне нравится ваш ответ и тонкая комбинация распаковки, почтового индекса, суммирования и понимания списка. Это отлично подходит для начинающих Python, чтобы понять языковые примитивы и структуру. Я бы сказал, однако, что (в зависимости от варианта использования!) Варианты библиотеки должны быть предпочтительными.
Решение Вопроса

это транспонировать списки, чтобы вы могли суммировать столбцы. Так что используйтеzip на значения словаря (ключи могут быть проигнорированы) иsum в понимании списка:

в одну строку:

total_sum_list = [sum(x) for x in zip(*my_dict.values())]

результат:

[6, 9, 12, 15]

Как это устроено:

zip чередует значения. Я использую распаковку аргументов для передачи значений dict как аргументовzip (любитьzip(a,b,c)). Итак, когда вы делаете:

for x in zip(*my_dict.values()):
    print(x)

вы получаете (какtuple):

(1, 3, 2)
(2, 4, 3)
(3, 5, 4)
(4, 6, 5)

данные готовы для суммирования (даже в другом порядке, но нам все равно, так как сложение коммутативно :))

Ваш ответ на вопрос