I'm trying to create a dictionary using for loops. Here is my code:

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

This outputs:

{0: 'John', 1: 'John', 2: 'John', 3: 'John'} 

Why?

I was planning on making it output:

{0: 'Hi', 1: 'I', 2: 'am', 3: 'John'} 

Why doesn't it output that way and how do we make it output correctly?

3

2 Answers

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

alternatively

In [7]: dict(list(enumerate(values))) Out[7]: {0: 'Hi', 1: 'I', 2: 'am', 3: 'John'} 
2
>>> dict(zip(keys, values)) {0: 'Hi', 1: 'I', 2: 'am', 3: 'John'} 
4