我在打印列表中的项目时遇到问题。
以下是相关代码:
countryList = []
cityList = []
def startFunction():
while True:
print("\nWhen you have typed in country and city, press 3 in the menu to see the weather forecast for your choice.\n")
menu = input("\nPress 1 for country\nPress 2 for city\nPress 3 to see forecast\nPress 4 to exit\n")
if menu == "1":
countryFunction()
elif menu == "2":
cityFunction()
elif menu == "3":
forecastFunction()
else:
print ("\nGoodbye")
break
我首先有一个国家和城市的空列表,然后是一个带有循环的start函数,它将调用不同的函数。
以下是选择国家/地区的功能:
def countryFunction():
countryc = input("Enter which country your city is in(in english): ")
countryList.append(countryc)
然后打印功能如下所示:
def forecastFunction():
r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/" + countryList[0] + "/" + cityList[0] + ".json")
data = r.json()
#Above is the problem, countryList[0] and cityList[0]
正如您所看到的那样,我刚刚放置countryList[0]
,但这只会打印出列表的第一项。由于我正在使用的循环,用户可以反复选择国家和城市,每次都会附加到列表中。
我的问题是:如何在代码中打印出最后一个列表项(列表中的最后一项)
r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/" + countryList[0] + "/" + cityList[0] + ".json"
答案 0 :(得分:3)
使用-1
作为列表的索引,即countryList[-1]
将为您提供列表中的最后一项。
虽然本教程将示例显示为字符串的索引,但它对列表的作用相同:http://docs.python.org/2/tutorial/introduction.html#strings
答案 1 :(得分:2)
评论太长了:
正如其他答案所指出的,您只需使用-1
索引功能,就像在countryList[-1]
中一样。
但是,您似乎还希望使用有序的类似集合的数据结构,以避免存储来自用户的重复条目。在这种情况下,使用OrderedDict可能对您更好。
或许可以查看OrderedSet食谱。