迭代时添加到字典中的值列表

时间:2020-10-27 09:24:29

标签: python dictionary for-loop

我试图计算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)

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

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)