理解将月份名称映射到其数值的字典
Comprehend a dictionary that maps the names of months to their numerical values
我正在尝试创建一个字典,将月份名称映射到它们的特定数值(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。
怎么了?
在您的代码 enumerate(['Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'])
中,列表只有一个字符串。
在月份名称周围使用 '
或使用 split
month_dict = {k:v+1 for v,k in enumerate(['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])}
您正在迭代一个元素,即整个逗号分隔的字符串。您需要用逗号分隔字符串:
>>> 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
。
试试下面的代码,
import numpy as np
month_dict = {k:v+1 for v,k in enumerate('Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','))}
month_dict
输出
{'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
你的数组只包含一个字符串,要么使用 split 方法,要么在 enumerate 方法中将元素作为单独的字符串传递
拆分为 ,
并使用 enumerate
索引开始 1
例如:
print({v:i for i,v in enumerate('Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(","), 1)})
输出:
{'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
我正在尝试创建一个字典,将月份名称映射到它们的特定数值(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。
怎么了?
在您的代码 enumerate(['Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'])
中,列表只有一个字符串。
在月份名称周围使用 '
或使用 split
month_dict = {k:v+1 for v,k in enumerate(['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])}
您正在迭代一个元素,即整个逗号分隔的字符串。您需要用逗号分隔字符串:
>>> 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
。
试试下面的代码,
import numpy as np
month_dict = {k:v+1 for v,k in enumerate('Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','))}
month_dict
输出
{'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
你的数组只包含一个字符串,要么使用 split 方法,要么在 enumerate 方法中将元素作为单独的字符串传递
拆分为 ,
并使用 enumerate
索引开始 1
例如:
print({v:i for i,v in enumerate('Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(","), 1)})
输出:
{'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}