Я пытаюсь решить следующую проблему:
Учитывая список дат рождения и дат смерти, найдите год, в котором большинство людей были живы.
Вот мой код:
b = [1791, 1796, 1691, 1907, 1999, 2001, 1907] # birth dates
d = [1800, 1803, 1692, 1907, 1852, 1980, 2006] # death dates
year_dict = {} # populates dict key as year, val as total living/dead
for birth in b:
year_dict.setdefault(birth,0) # sets default value of key to 0
year_dict[birth] += 1 # will add +1 for each birth and sums duplicates
for death in d:
year_dict.setdefault(death,0) # sets default value of key to 0
year_dict[death] += -1 # will add -1 for each death and sums duplicates
Возвращает следующий код:
{1791: 1, 1796: 1, 1691: 1, 1907: 1, 1999: 1, 2001: 1, 1800: -1, 1803: -1, 1692: -1, 1852: -1, 1980: -1, 2006: -1}
Сейчас я ищу способ создать промежуточную сумму, чтобы определить, в каком году проживает больше всего людей, например:
Изображение желаемого результата
Как мы видим, результат показывает, что в 1796 году большинство людей было живым на основе данных наборов данных. У меня возникли проблемы с получением части текущей суммы, которая должна была бы принимать каждое значение ключа и суммировать его с предыдущим значением. Я пробовал несколько разных циклов и перечислений, но сейчас застрял. Как только я найду лучший способ решения этой проблемы, я создам функцию для повышения эффективности.
Если есть более эффективный способ сделать это с учетом сложности времени / пространства, пожалуйста, дайте мне знать. Я пытаюсь научиться эффективности с Python. Я очень ценю вашу помощь!!!