我有一个存储月份的词典:
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 :(得分:2)
我的意思是使用while
循环(while
循环很少用于python中的迭代),那么你需要一个反向哈希或字典用于此目的
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。 - 对于python中的命名约定,请通过Pep 8 guidelines
答案 1 :(得分: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])
while循环版本,如果由于某种原因你不想使用for
循环(这通常应该用于此) -
month = 1
while month <= 12:
print(months_dict[i])
month += 1
答案 2 :(得分:-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