2015-09-24 3 views
-2

У меня есть словарь, который хранит месяцев:Операции над словарей в Python

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

И у меня есть время цикла, что петли 12 раз (один год):

(псевдо)

Month = 1 
Final = 12 
while Month <= Final: 
    call Month_from_dictionary_as_string_here 
    Month += 1 

как я могу вызвать словарные ключи в зависимости от значения другой переменной? Благодарю.

+0

Вы Словарь неправильного пути вокруг ... – jonrsharpe

+0

Вы не можете, словари не предназначены для использования таким образом – akalikin

ответ

1

Я бы предположил, что у вас есть словарь назад. Вам следует отобразить из номеров (key) именам месяца (value). Пример -

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

Затем вы можете непосредственно использовать подстрочный, чтобы получить название месяца, используя номер -

months_dict = {1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'} 
for i in range(1,13): 
    print(months_dict[i]) 

в то время как версия петли, если по каким-то причинам вы не хотите использовать for цикл (который является то, что вы обычно должны использовать для этого) -

month = 1 
while month <= 12: 
    print(months_dict[i]) 
    month += 1 
2

Я вас имел в виду на использовании while цикла (while цикл редко используется для итерации в питоне), то вам нужен обратный хэш или словарь для этой цели

reverse_months = {value: key for key, value in Months.items()} 

print(reverse_months[1]) # January 

Лучше реализация будет использовать for цикл -

for month in range(1, 13): 
    print(reverse_months[month]) 

Хотя, зачем вам это нужно looping вообще в первое место, я думаю, вы можете легко обойтись с итератором, если ваш случай использования сильно отличается от того, что предлагает ваш код.

for key, value in Months.items(): 
    print("key: {0}, value: {1}".format(key, value) 

P.S. - Пожалуйста, пройти через Pep 8 guidelines слишком для именования в Python

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

Month = 1 
Final = 12 
while Month <= Final: 
    for mon, digit in Months.items(): 
     if Month == digit: 
      print (mon) # in your case call Month_from_dictionary_as_string_here 
    Month += 1 
+0

Это очень неэффективный способ использовать словарь, особенно если вы даже не «ломаете» его, когда он найден. Кроме того, полезно включить некоторые объяснения относительно того, почему ваши изменения работают. – jonrsharpe

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