Python 代码输出不正确
下面显示的代码正在输出我的CSV表上的所有内容。它不应该那样做。相反,目标是匹配年份和数据位置,最终打印该行中的信息Python 代码输出不正确,python,excel,python-2.7,python-3.x,Python,Excel,Python 2.7,Python 3.x,下面显示的代码正在输出我的CSV表上的所有内容。它不应该那样做。相反,目标是匹配年份和数据位置,最终打印该行中的信息 Example if I input: Year=1 data_location=1 - - 最后一个if语句将始终返回true,因为您检查的是年份而不是年份。据我所知,您还需要将该语句上移一级,以便在添加所有行后执行 for row in data: Year,busnum,busname,scaled_power,tla,data_location,empty
Example if I input:
Year=1
data_location=1
-
-
最后一个if语句将始终返回true,因为您检查的是年份而不是年份。据我所知,您还需要将该语句上移一级,以便在添加所有行后执行
for row in data:
Year,busnum,busname,scaled_power,tla,data_location,empty,year_link,from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[0:16]
#If this is a year not seen before, add it to the dictionary
if Year not in mydict:
mydict[Year] = {}
busses_in_year = mydict[Year]
if data_location not in busses_in_year:
busses_in_year[data_location] = []
#Add the bus to the list of busses that stop at this location
busses_in_year[data_location].append((busnum,busname,scaled_power))
if year in mydict and data_location in mydict[year]:
busses_in_year = mydict[year]
#print("Here are all the busses at that location for that year and the new LOAD TOTAL: ")
#print("\n")
#Busnum, busname,scaled_power read from excel sheet matching year and location
for busnum,busname,scaled_power in busses_in_year[data_location]:
scaled_power= float(scaled_power)
busnum = int(busnum)
output='Bus #: {}\t Area Station: {}\t New Load Total: {} MW\t'
print(output.format(busnum,busname,scaled_power))
else:
exit
os.remove(LOAD_GEN_DATAFILE)
此外,深入研究将大大简化for循环。你可以这样做:
for row in data:
Year,busnum,busname,scaled_power,tla,data_location,empty,year_link,from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[0:16]
value = (busnum, busname, scaled_power)
mydict.setdefault(Year, {}).setdefault(data_location, []).append(value)
我不熟悉设置默认值。你能举一个例子说明我如何将其应用到我的代码中。实际上,现在没有输出任何东西,而且你的年份和数据位置是正确的吗?您可以输出/调试mydict,以确保其构造正确。
for row in data:
Year,busnum,busname,scaled_power,tla,data_location,empty,year_link,from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[0:16]
#If this is a year not seen before, add it to the dictionary
if Year not in mydict:
mydict[Year] = {}
busses_in_year = mydict[Year]
if data_location not in busses_in_year:
busses_in_year[data_location] = []
#Add the bus to the list of busses that stop at this location
busses_in_year[data_location].append((busnum,busname,scaled_power))
if year in mydict and data_location in mydict[year]:
busses_in_year = mydict[year]
#print("Here are all the busses at that location for that year and the new LOAD TOTAL: ")
#print("\n")
#Busnum, busname,scaled_power read from excel sheet matching year and location
for busnum,busname,scaled_power in busses_in_year[data_location]:
scaled_power= float(scaled_power)
busnum = int(busnum)
output='Bus #: {}\t Area Station: {}\t New Load Total: {} MW\t'
print(output.format(busnum,busname,scaled_power))
else:
exit
os.remove(LOAD_GEN_DATAFILE)
for row in data:
Year,busnum,busname,scaled_power,tla,data_location,empty,year_link,from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[0:16]
value = (busnum, busname, scaled_power)
mydict.setdefault(Year, {}).setdefault(data_location, []).append(value)