[英]I have this error and I don't know what to do
def Reset():
data = []
data.append({
'year': now.year,
'months': []
})
for year in range(len(data)):
for month in range(12):
data[year].months.append({
'month': (month + 1),
'days': []
})
if (month+1 == 2):
daysAmount = 28
if (isinstance(year/4, int)):
daysAmount = 29
elif (month+1 == 12):
daysAmount = 31
elif (isinstance((month+1)/2, int)):
daysAmount = 30
else:
daysAmount = 31
for day in range(daysAmount):
data[year].months[month].days.append({
'day': (day + 1),
})
with open('./data.txt', 'w') as outfile:
json.dump(data, outfile)
Reset()
我更改了代码,但现在又出现了一个我不明白的错误。 我该怎么办? 如您所见,它确实有一个属性months ...
line 13, in Reset
data[year].months.append({
AttributeError: 'dict' object has no attribute 'months'
len() function 确实返回 integer。
for x in y:
y 这里必须是一个列表或迭代的东西而不是 integer
通过使用len(data)
你只返回列表的长度
你应该使用
for year in data:
是的,有一种方法可以将数据列表中的项目数而不是实际对象放入“年份”变量中,为此您应该使用
for year in range(len(data)):
如下
import json
import datetime
now = datetime.datetime.now()
def Reset():
data = []
data.append({
'year': now.year,
'months': []
})
for year in range(len(data)):
for month in range(12):
data[year]['months'].append({
'month': (month + 1),
'days': []
})
if (month+1 == 2):
daysAmount = 28
if (isinstance(year/4, int)):
daysAmount = 29
elif (month+1 == 12):
daysAmount = 31
elif (isinstance((month+1)/2, int)):
daysAmount = 30
else:
daysAmount = 31
for day in range(daysAmount):
data[year]['months'][month].days.append({
'day': (day + 1),
})
with open('./data.txt', 'w') as outfile:
json.dump(data, outfile)
Reset()
另一种方法是使用
for year in data:
如下
import json
import datetime
now = datetime.datetime.now()
def Reset():
data = []
data.append({
'year': now.year,
'months': []
})
for year in data:
for month in range(12):
year['months'].append({
'month': (month + 1),
'days': []
})
if (month+1 == 2):
daysAmount = 28
if (isinstance(year/4, int)):
daysAmount = 29
elif (month+1 == 12):
daysAmount = 31
elif (isinstance((month+1)/2, int)):
daysAmount = 30
else:
daysAmount = 31
for day in range(daysAmount):
year['months'][month].days.append({
'day': (day + 1),
})
with open('./data.txt', 'w') as outfile:
json.dump(data, outfile)
Reset()
当你做 len(data) 时,它返回一个不可迭代的 integer;
因此,您应该执行以下操作:
for year in range(len(data))
或者
for item in data.item:
year = item['year']
...
您收到错误是因为您属于这一行
for year in len(data):
此 len(data) 返回 integer 并且不可迭代。
相反,您可以这样做
for item in data:
year = item['year']
或者
for index in range(len(data)):
item = data[index]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.