Python 在列表中嵌入的元组中存储多个用户类实例

Python 在列表中嵌入的元组中存储多个用户类实例,python,Python,我试图在一个元组中存储用户输入对象的多个实例,然后在单个列表中存储每个元组一次。 以下是我的脚本代码: class HolidayData: def __init__(self, idnum, dcity): self.idnum = idnum self.dcity = dcity def main(): global holiday_data_obj global holiday_database h

我试图在一个元组中存储用户输入对象的多个实例,然后在单个列表中存储每个元组一次。 以下是我的脚本代码:

class HolidayData:       

    def __init__(self, idnum, dcity):

        self.idnum = idnum  
        self.dcity = dcity 

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

    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_database.append(F)

def print_packages():    
            print(holiday_database)
这是我得到的输出模式

[(1,‘第一城’,(1,‘第一城’,(2,‘第二城’,(1,‘第一城’,(2,‘第二城’,(3,‘第三城’)]


我尝试迭代holiday_data_对象和database_列表以检查重复值,但结果是相同的输出模式。

问题在于附加逻辑。每次您获得一个新项目时,您都会将整个包列表添加到“数据库”中。因此,第一次只添加新包。第二次,添加第一个和第二个包。第三次,添加所有三个包


在每次迭代中只添加最新的包。或者,将它们全部收集到包列表中,然后仅在用户输入
n
后将它们添加到数据库中。这两种方法都会导致问题。

问题在于附加逻辑。每次您获得一个新项目时,您都会将整个包列表添加到“数据库”中。因此,第一次只添加新包。第二次,添加第一个和第二个包。第三次,添加所有三个包


在每次迭代中只添加最新的包。或者,将它们全部收集到包列表中,然后仅在用户输入
n
后将它们添加到数据库中。这两种方法都会导致您的问题。

您知道我是如何在每次迭代中只添加最新的包的吗?我已经尝试使用“in”来检查与“no success”的相似性。您遇到了什么问题?您可以在
add\u packages
的第一行创建对象。正如我所说,只添加那个,而不是整个包列表(下面的循环)。我被困在哪里追加而没有遇到名称空间问题。你知道我如何在每次迭代中只添加最新的包吗?我已经尝试使用“in”来检查与否的相似性。你被困在哪里?您可以在
add\u packages
的第一行创建对象。正如我所说,只添加那个,而不是整个包列表(下面的循环)。我被困在哪里追加而没有遇到名称空间问题