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

2024-04-27 02:56:06 发布

您现在位置: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, 'first city'), (1, 'first city'), (2, 'second city'), (1, 'first city'), (2, 'second city'), (3, 'third city')]

我知道我的附加逻辑是错误的。我无法实现一个只将最新的元组输入添加到列表并保留列表中以前的元组的解决方案


Tags: objcity列表inputdatapackagesdefglobal
1条回答
网友
1楼 · 发布于 2024-04-27 02:56:06

add_packages内的循环将holiday_data_obj的完整内容的元组添加到每个调用的holiday_datastore末尾。所以第一个调用添加第一个元素,然后添加前两个元素,依此类推。如果您只想向它添加一个项,那么不应该迭代holiday_data_obj,而应该为holiday_data_obj[-1]添加一个元组

相关问题 更多 >