仅将最新的实例对象添加到元组列表

时间:2018-12-14 17:23:13

标签: python

我试图将用户输入对象的新实例存储在一个元组中,然后将每个元组一次存储在一个列表中。

def main():
    global holiday_data_obj 
    global holiday_datastore
    holiday_data_obj = []
    holiday_datastore = []

    while True:
        if input("Add Holiday Package? (y/n) ") == "n":
            break
        else:

            idnum = int(input('Enter your unique id number: '))
            dcity = str(input('Enter your destination city : '))

            add_packages(idnum, dcity)
            print_packages()


def add_packages(idnum, dcity):
    holiday_data_obj.append( HolidayData(idnum, dcity))
    for package in holiday_data_obj:
        F = tuple(package.__dict__.values())
        holiday_datastore.append(F)

def print_packages():    
            print(holiday_datastore)

我得到的输出模式是:

  

[(1,'第一个城市'),(1,'第一个城市'),(2,'第二个城市'),(1,'第一个城市   城市”),(2,“第二城市”),(3,“第三城市”)]

我知道我的附加逻辑有问题。我无法实现将仅将最新的元组输入追加到列表中并在列表中保留先前的元组的解决方案。

1 个答案:

答案 0 :(得分:0)

add_packages内的循环在每次调用时将holiday_data_obj完整内容的元组添加到holiday_datastore的末尾。因此,第一个调用将添加第一个元素,然后添加前两个元素,依此类推。如果只想向其中添加一项,则不应该迭代holiday_data_obj,而只需为holiday_data_obj[-1]添加一个元组即可。