2016-06-09 3 views
2

У меня есть массив,Как создать словарь в python3?

months=['January','February','March','April','May','June','July','August','September','October','November','December'] 

, и я хочу сделать это как словарь, как

months = {1:'January', 2:'February',....} 

Я попытался enumerate(), но не имели никакой удачи. Как я могу присвоить порядковый номер списку, чтобы сделать словарь? Спасибо заранее!

ответ

0

Если вы хотите придерживаться Перечислим вы могли бы сделать это следующим образом:

months =['January','February','March','April','May','June','July','August','September','October','November','December'] 

d_months = {} 

for i, month in enumerate(months): 
    d_months[i+1] = month 

print(d_months) 

выхода:

{1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'} 

Поскольку перечисление начинается с 0 вы должны использовать [i+1]

+0

Спасибо! Это работает хорошо! – jaykodeveloper

2

Попробуйте это.

months= 
['January','February','March','April','May','June','July','August','September','October','November','December'] 

dict = {i+1:months[i] for i in range(12)} 

Как указано в комментариях, используйте диапазон (len (months)). Поскольку длина списка известен в этом случае, я использовал 12.

+1

Должно быть n ot размер жесткого кода - используйте 'len (месяцы)' –

+0

@IvanNevostruev Yup. должен был упомянуть об этом. Поскольку мы знаем длину заранее, в этом случае я не видел нужды. Изменит мой ответ :) –

+0

@AbhirathMahipal Я использовал 'range' тоже. Спасибо! – jaykodeveloper

2

Попробуйте использовать eumerate, как это, чтобы заставить его начать с 1.

months =['January','February','March','April','May','June','July','August','September','October','November','December'] 
months = {i:m for i,m in enumerate(months,1)} 
print months 

будет производить

{1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'} 
4

Поскольку dict() конструктор строит словарь непосредственно из пар ключ-значение, это также работает:

dict(enumerate(months, 1)) 

Вот некоторые тесты, даже если этого ISN» t действительно важно для вашего прецедента:

timeit dict(enumerate(months, 1)) 
The slowest run took 10.34 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 1.37 µs per loop 

timeit {i:m for i,m in enumerate(months,1)} 
The slowest run took 7.77 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 1.28 µs per loop 

timeit {i+1:months[i] for i in range(12)} 
The slowest run took 5.42 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 1.89 µs per loop 
+0

Благодарим вас за сравнение. Вы пишете этот код? – jaykodeveloper

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