我有一个嵌套的for循环,它在第一次迭代后不运行
N, M = map(int, input().split())
numbers = map(int, input().split())
dic = {}
for m in range(N):
dic.setdefault(m,[])
for n in numbers:
if n % N == m:
dic[m].append(n)
print(dic)
以上代码为下面的示例数据生成以下结果{0: [3, 42], 1: [], 2: []}
:
3 5
1 3 8 10 42
然而,我想得到{0: [3, 42], 1: [1, 10], 2: [8]}
我做错了什么?
问题是map
返回一个迭代器,而您在第一个外部循环中完全使用了迭代器。你需要:
numbers = [int(k) for k in input().split()]
代替map
。
try this:
N, M = map(int, input().split())
numbers = [int(x) for x in input().split()]
dic = {}
for m in range(N):
dic.setdefault(m,[])
for n in numbers:
print(n % N)
if n % N == m:
dic[m].append(n)
print(dic)