Dict of Dict Sum Подобные ключи только с пониманием dict - PullRequest
0 голосов
/ 05 мая 2018

Я искал возможные ответы на этот вопрос и не мог найти способ сделать это с помощью простого понимания или какой-либо формы функционального программирования с использованием слова без использования циклов .

У меня есть функция:

get_grades(theDict, hw)

, который принимает слово dict и строку, такую ​​как 'hw1' или 'hw4' в формате этого типа.

Формат документа:

get_grades({'Ggg':{'hw1': 1, 'hw2': 2, 'hw3': 3},'Hhh':{'hw1': 4, 'hw2': 3,'hw3': 6}},'hw1')

Я пытаюсь взять все ключи, которые соответствуют hw, и суммировать все значения для этого ключа. Если hw = hw1, функция вернет:

5 

(все значения ключа hw1, добавленные вместе)

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Я не понимаю, что вы имеете в виду "без использования циклов" ... Какой смысл и как это возможно, поскольку суммирование и неопределенный набор элементов требуют итерации.

Я бы использовал sum() в сочетании с выражением генератора:

def get_grades(theDict, hw):
    return sum(v.get(hw, 0) for v in theDict.values())
0 голосов
/ 05 мая 2018

Вы можете использовать map:

def get_grades(d, h):
  return sum(map(lambda x:x.get(h, 0), d.values()))

print(get_grades({'Ggg':{'hw1': 1, 'hw2': 2, 'hw3': 3},'Hhh':{'hw1': 4, 'hw2': 3,'hw3': 6}},'hw1'))

Выход:

5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...