【问题标题】:Edit list element in multilist - Python在多列表中编辑列表元素 - Python
【发布时间】:2025-12-30 08:20:12
【问题描述】:

我正在使用python 3.x,我有以下问题,用户使用键盘输入某些数据并填写N个列表以创建一个联系人列表,然后在一个列表中我收集列表的所有数据,我需要修改每个列表的数据,(我已经有了,我用for修改了一个具有特定值的列表的数据)示例,Names列表,我修改了Andrew的名字,但是在Contacts列表中,有所有Andrew的信息(电话、邮件等),但我只需要在联系人列表中修改 Andrew 的值 我有所有这些清单:

names = []
surnames = []
phones = []
emails = []
addresses = []
ages = []
salaries = []
genres = []
contacts = []
# and use the append to add the data into the contacts list
contacts.append ([names, surnames, phone numbers, emails, addresses, ages, salaries, genders])

然后我更新一个联系人的信息

search = input(Fore.LIGHTBLUE_EX + "Type the name of the contact you want update: ")
    for i in range(len(names)):
        if (names[i] == search):
                try:
                    names[i] = input(Fore.MAGENTA + "Type the New name: ")
                    names[i] = nombres[i].replace(" ", "")
               if names[i].isalpha() == True:
                    print(Fore.GREEN + "Already saved, congrats.")
                    pause= input(Fore.LIGHTGREEN_EX + "Press enter to exit")

但我不知道如何更新联系人列表中的姓名。

【问题讨论】:

    标签: python list


    【解决方案1】:

    当您调用contacts.append() 时,您会将列表列表添加到列表中,因此您的contacts 列表将如下所示:

    contacts = [[[names[0], names[1], ...], [...], [...]]]
    

    没有必要将一个项目的列表嵌套在另一个列表中,因此我只需调用 contacts.append() 并将每个列表(namessurnames 等)传递给该方法,这样可以更轻松地进行索引.

    由于列表 names 将是列表 contacts (contacts[0]) 中的第一项,您可以做以下两件事之一(可能还有更多,但这些都不是我的想法):

    1. 使用嵌套列表索引将特定索引重新分配给新值(contacts[0][0] = "updated name" 会将names 列表的第一项更新为"update name"
    2. 将整个嵌套列表重新分配给一个新列表(contacts[0] = new_name_list 会将 contacts[0],以前的 names 列表重新分配给 new_name_list

    附带说明:在这种情况下,我会推荐字典而不是列表,因为这样更容易跟踪正在重新分配/修改的内容。

    contacts = {
        "names": names,
        "surnames": surnames,
        ...
    }
    

    这样做可以更清楚地说明您指的是哪个列表; contacts[0] 没有提供太多信息,但contacts["names"] 告诉读者您指的是names 列表。这仅用于更简洁的代码;功能上没有太大区别。

    【讨论】: