使用Python中的字典将月份数转换为月份名

时间:2018-01-01 21:48:52

标签: python arrays python-3.x numpy dictionary

我正在尝试将数字数组(1-12)转换为相应的月份(1月至12月),但我必须使用字典。

我有一个数组形式的月份,我得到一个错误“TypeError:只有length-1数组可以转换为Python标量”或“TypeError:'dict'对象不可调用”

outfile = ("heathrow_weather.npz")

#find out names of arrays
ph_read= np.load(outfile)
print(ph_read.files)

#assign arrays to a variable
max_temp=ph_read['t_max']

month_no=ph_read['month']

year_no=ph_read['year']

rainfall=ph_read['rainfall']

min_temp=ph_read['t_min']


outfile = open("weather_tables.txt", "w")
outfile.write("Month    Year    Min Temp    Max Temp    Rainfall\n")
outfile.write("                   (°C)         (°C)         (mm)\n")


for t0, t1, t2, t3, t4 in zip(month_no, year_no, max_temp, min_temp, rainfall):

string = str(t0)+"      "+str(t1)+"        "+str(t2)+"          "+str(t3)+"         "+str(t4)+"\n"
outfile.write(string)

outfile.close()

所有这些代码都有效,所以它只适用于上下文。我正在努力的一点是下一步

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

我尝试过使用:

month_int=int(month_no)
month=MonthDict(month_int)

但我只是得到了长度为1的错误。

我也尝试过:

for integer in month_no:
month_no = MonthDict(month_no)

但这会产生“dict对象无法调用”错误

2 个答案:

答案 0 :(得分:4)

尝试MonthDict[month_int] - 要访问dict的值,您需要使用方括号,而不是圆括号。

答案 1 :(得分:0)

正如我在评论中指出的那样,dict是[] 但您也可以使用datetime模块为您提供完整的月份名称(依赖于语言环境),而无需创建自己的转换表,例如。

In []:
import datetime
year_no, month_no = 2017, 3
d = datetime.datetime(year_no, month_no, 1)
d.strftime('%B')

Out[]:
'March'

或简短形式:

In []:
d.strftime('%b')

Out[]:
'Mar'