#python #dictionary #for-loop
#python #словарь #for-цикл
Вопрос:
Я пытался посчитать делители из 10 чисел и добавить их в качестве значения в их словарь, но когда я пытался добавить другие делители в список значений, этого не произошло и было заменено. Интересно, почему это происходит.
a = []
t = dict()
for i in range(10):
a.append(input())
a = [int(i) for i in a]
for num in a:
for x in range (1, num 1):
if (num % x) == 0:
t[num] = []
t[num].append(x)
print(t)
Ответ №1:
Это потому, что вы повторно инициализируете t[num]
, когда не должны:
a = []
t = dict()
for i in range(10):
a.append(input())
a = [int(i) for i in a]
for num in a:
for x in range (1, num 1):
if (num % x) == 0:
if num not in t: # Here: init t[num] to [] only if it does not yet exist
t[num] = []
t[num].append(x)
print(t)
Ответ №2:
defaultdict может облегчить вам жизнь здесь, поскольку он позаботится о распределении списка.
from collections import defaultdict
a = []
t = defaultdict(list)
for i in range(10):
a.append(input())
a = [int(i) for i in a]
for num in a:
for x in range (1, num 1):
if (num % x) == 0:
t[num].append(x)
print(t)