遍历列表中的元组

时间:2018-12-14 19:49:16

标签: python list tuples

我目前正在尝试遍历存储在列表中的元组并打印出前3个元素。它最初可以工作,但是随后又将第一个索引打印3次,我不知道为什么。以下代码:

if user_choice == "b":
    for x in holiday_database:       
        for i in x:
            if x.index(i) == 0:            
                print("\nPackage ", i)
            if x.index(i) == 1:
                print("Country: ", i)
            if x.index(i) == 2:
                print("City: ", i)

输出以下内容:

Package  1
Country:  france
City:  paris

Package  1

Package  1

Package  1

任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

根本不需要遍历元组。使用字符串格式。元组已经是用于字符串格式化参数的数据类型,因此您所需要做的就是对元组进行切片。

if user_choice == "b":
    for x in holiday_database:       
        print('\nPackage %d\nCountry: %s\nCity: %s' % x[:3])

这假设Package(即x[0])的数据类型为int。如果它是str,则只需将%d更改为另一个%s

答案 1 :(得分:0)

看起来错误是数据;如果 holiday_database [(1,“ france”,“ paris”),(1,),(1,),(1,)]

但是,您可以通过多种方式更简洁地重写代码。我建议拆开元组:

for record in holiday_database:
    package_num, country, city = record
    print("\nPackage:", package_num)
    print("Country:", country)
    print("City:", city)

之所以可行,是因为 package_num,国家/地区,城市本身是一个元组表达式,因此python可以将每个变量与数据进行匹配。如果元组的大小不正确,则会抛出错误。