小编Zas*_*dos的帖子

添加到同一字典的不同生成器返回相同的值

我刚刚遇到一个奇怪的Python(3.7.0)行为,我真的不明白,看起来像是一个bug.我想用生成器创建一个字典,但不知怎的,它们都返回相同的值.这是我正在谈论的代码示例:

import itertools

d = {
"a": [-1, 2],
"b": [1, 2],
"c": [20, 20]
}
g = dict()
g2 = dict()
for letter, values in d.items():
    g[letter] = (values[0] * values[1] * x for x in itertools.count())
    g2[letter] = [values[0] * values[1] * x for x in range(3)]

for i in range(3):
    for l, v in g.items():
        print(v.__next__())
print(g2)
Run Code Online (Sandbox Code Playgroud)

从我的观点来看,g2元素和g生成器的预期输出是相同的,但是我总是从最新的生成器接收值:

0
0
0
400
400
400
800
800
800
{'a': [0, -2, -4], 'b': [0, 2, 4], 'c': [0, …
Run Code Online (Sandbox Code Playgroud)

python dictionary python-itertools python-3.x

2
推荐指数
1
解决办法
57
查看次数

标签 统计

dictionary ×1

python ×1

python-3.x ×1

python-itertools ×1