Python 代码输出不正确

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

下面显示的代码正在输出我的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,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)