Functools.reduce в Python не работает должным образом ⇐ Python
Functools.reduce в Python не работает должным образом
Я хотел бы суммировать ключи словарей, вложенных в список, с помощью функции functools.reduce
Я могу сделать это БЕЗ функции functools.reduce с помощью следующей простой программы:
dict1 = {'a': '1', 'b': '2'} dict2 = {'a': '5', 'b': '0'} dict3 = {'a': '7', 'b': '3'} список_данных = [дикт1, дикт2, дикт3] итог_а = 0 итог_б = 0 для записи в data_list: total_a += eval(запись['a']) total_b += eval(запись['b']) печать (total_a) печать (total_b) Однако, как я уже сказал, я хотел бы получить те же результаты, используя вместо этого метод functools.reduce.
Вот моя попытка использовать functools.reduce с лямбда-выражением:
из functools import уменьшить dict1 = {'a': '1', 'b': '2'} dict2 = {'a': '5', 'b': '0'} dict3 = {'a': '7', 'b': '3'} список_данных = [дикт1, дикт2, дикт3] total_a = уменьшить(лямбда x, y: int(x['a']) + int(y['a']),data_list) total_b = уменьшить(лямбда x, y: int(x['b']) + int(y['b']),data_list ) печать (total_a) печать (total_b) К сожалению, я получаю следующую ошибку и не знаю почему:
TypeError: объект 'int' не подлежит подписке Кто-нибудь знает, почему я получаю эту ошибку?
Я хотел бы суммировать ключи словарей, вложенных в список, с помощью функции functools.reduce
Я могу сделать это БЕЗ функции functools.reduce с помощью следующей простой программы:
dict1 = {'a': '1', 'b': '2'} dict2 = {'a': '5', 'b': '0'} dict3 = {'a': '7', 'b': '3'} список_данных = [дикт1, дикт2, дикт3] итог_а = 0 итог_б = 0 для записи в data_list: total_a += eval(запись['a']) total_b += eval(запись['b']) печать (total_a) печать (total_b) Однако, как я уже сказал, я хотел бы получить те же результаты, используя вместо этого метод functools.reduce.
Вот моя попытка использовать functools.reduce с лямбда-выражением:
из functools import уменьшить dict1 = {'a': '1', 'b': '2'} dict2 = {'a': '5', 'b': '0'} dict3 = {'a': '7', 'b': '3'} список_данных = [дикт1, дикт2, дикт3] total_a = уменьшить(лямбда x, y: int(x['a']) + int(y['a']),data_list) total_b = уменьшить(лямбда x, y: int(x['b']) + int(y['b']),data_list ) печать (total_a) печать (total_b) К сожалению, я получаю следующую ошибку и не знаю почему:
TypeError: объект 'int' не подлежит подписке Кто-нибудь знает, почему я получаю эту ошибку?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как создать реализацию functools.reduce, которая в R будет выглядеть так же, как Reduce?
Anonymous » » в форуме Python - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-