首页 > 解决方案 > 理解将月份名称映射到其数值的字典

问题描述

我正在尝试创建一个字典,将月份名称映射到它们的特定数值(Jan->1、Feb->2 等),使用

month_dict = {k:v+1 for v,k in enumerate(['Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'])}

然而,而不是返回正确的数值5

print(month_dict['May'])

抛出一个 KeyError。

怎么了?

标签: pythondictionary-comprehension

解决方案


您正在迭代一个元素,即整个逗号分隔的字符串。您需要用逗号分隔字符串:

>>> month_dict = {k:v+1 for v,k in 
enumerate('Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','))}
>>> print(month_dict['May'])
5

您的方法提供了以下字典:

{'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec': 1}

所以你可以看到,它的键是'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec',没有单独的键,命名为May


推荐阅读