2015-05-16 3 views
6

Im пытается создающим словарь, используя для петель здесь мой код:заполнение словаря, используя для петель (питона)

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

это выходы:

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

почему?

Я планировал сделать это выход:

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

почему не она выдавала таким образом, и как мы делаем это выходной правильно?

+1

добавить оператор печати в секунду для цикла – Ajay

+0

я попробовал, что выход был все тот же –

+0

проверка ответ я дал – Ajay

ответ

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

альтернативно

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

спасибо за asnwer. Это интересно. потому что перечисление также дает цифры правильно? cool –

4
>>> dict(zip(keys, values)) 
{0: 'Hi', 1: 'I', 2: 'am', 3: 'John'} 
+1

Это выглядит так просто, что мне стыдно за те петли, которые я сделал. Большое спасибо –

+0

и он предполагает, что ключи и значения правильно связаны одинаковыми индексами ... Я полагаю, что цикл for также предполагает это, но он немного более гибкий. –

+0

@MikePalmice: документация на Python гарантирует, что это случай, если словарь не мутируется между ними. –

Смежные вопросы