在Python中操作字典

时间:2015-09-24 11:05:51

标签: python dictionary while-loop

我有一个存储月份的词典:

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

如何根据其他变量的值调用字典键?感谢。

3 个答案:

答案 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