我正在尝试将数字数组(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对象无法调用”错误
答案 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'