Python:我有一个字典列表,但是当我尝试调用特定的Key和Value时,它会抛出错误


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()文件。

最新更新