def readParksFile(fileName="national_parks(1).csv"):
nationalParks = open(fileName)
headers = nationalParks.readline()
keys = headers.split(",")
numKeys = len(keys)
parksList = []
values = nationalParks.readlines()
rowsList = []
parksDictionary = {}
for row in values:
rowsList.append(row.split(","))
for item in rowsList:
parksDictionary = {}
for i in range(numKeys):
parksDictionary[keys[i]] = item[i]
parksList.append(parksDictionary)
for i in range(len(parksList)):
return(parksList[i])
nationalParks.close()
使用上面的代码创建了一个字典列表
def printParksInState(parksList):
state = getStateAbbr()
for parksDictionary in parksList:
if state in parksDictionary["State"]:
print(parksDictionary["Name"] + " (" + parksDictionary["Code"] + ")")
print("t" + "Location:" + parksDictionary["State"])
print("t" + "Area:" + parksDictionary["Acres"] + " acres")
print("t" + "Date Established:" + tasks.convertDate(parksDictionary["Date"]))
else:
print("There are no national parks in " + state + " or it is not a valid state")
我有一些函数使用字典列表来打印信息
def main():
print("National Parks")
parksList = tasks.readParksFile()
menuDict = interface.getMenuDict()
choice = ("")
while choice != "Q":
print(interface.displayMenu(menuDict))
choice = interface.getUserChoice(menuDict)
if choice == "A":
interface.printAllParks(parksList)
elif choice == "B":
interface.printParksInState(parksList)
elif choice == "C":
interface.printLargestPark(parksList)
elif choice == "D":
interface.printParksForSearch(parksList)
else:
print("This is not an option")
在主函数中,我调用了使用字典列表的其他函数
错误然而,无论什么函数我调用它抛出的错误,字符串索引必须是整数,我不确定这个错误是什么或如何修复它。请帮助!
错误告诉您parksDictionary
不是dict
,而是str
。
这个bug是在readParksFile
中,它只返回一个项目:
for i in range(len(parksList)):
return(parksList[i])
它应该这样做:
nationalParks.close()
return parksList
一旦你return
,函数就完成了,所以你只能return
一件事,你应该在那之前close()
文件。