使用for循环填充字典(python)

Hal*_*rez 34 python dictionary

我正在尝试使用for循环创建一个字典.这是我的代码:

dicts = {}
keys = range(4)
values = ["Hi", "I", "am", "John"]
for i in keys:
    for x in values:
        dicts[i] = x
print(dicts)
Run Code Online (Sandbox Code Playgroud)

这输出:

{0: 'John', 1: 'John', 2: 'John', 3: 'John'}
Run Code Online (Sandbox Code Playgroud)

为什么?

我打算把它输出:

{0: 'Hi', 1: 'I', 2: 'am', 3: 'John'}
Run Code Online (Sandbox Code Playgroud)

为什么不以这种方式输出,我们如何正确输出?

Aja*_*jay 48

dicts = {}
keys = range(4)
values = ["Hi", "I", "am", "John"]
for i in keys:
        dicts[i] = values[i]
print(dicts)
Run Code Online (Sandbox Code Playgroud)

或者

In [7]: dict(list(enumerate(values)))
Out[7]: {0: 'Hi', 1: 'I', 2: 'am', 3: 'John'}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答。那很有意思。因为 enumerate 也会给出数字,对吗?凉爽的 (2认同)

Ign*_*ams 18

>>> dict(zip(keys, values))
{0: 'Hi', 1: 'I', 2: 'am', 3: 'John'}
Run Code Online (Sandbox Code Playgroud)

  • 这看起来很简单,我为我做的for循环感到羞耻.非常感谢你 (4认同)
  • 好吧,它确实假设键和值由​​相同的索引正确关联......我想 for 循环也假设这一点,但它稍微灵活一些 (2认同)