Python:基于input()从列表中删除项?

2024-09-30 10:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的一项作业,如果我们能增加教授在作业指导书中没有告诉我们要做的新功能,我们会提供额外的学分。这是一个密码保护程序,我正在使用caeser密码将网站/密码保存到列表中。我正在尝试创建一个基于用户特定输入的密码删除功能

例如,下面是一个随机模板列表:

passwords = [["facebook", "gGjjI%%%66"], ["youtube", "coYtF###12$"]]

假设我想删除youtube密码列表中的密码。我做了一些研究,似乎remove()可能是一个很好的选择,但我在实践中遇到了一些问题

if choice == '6':
    input("Enter the password you want to delete: ")
    for keyvalue in passwords:
        print(keyvalue[0])
    deletePassword = input()

    for i in range(len(passwords)):
        if deletePassword in passwords[i][0]:
            passwords.remove(deletePassword)

这里的问题是,在我输入我想要删除密码的网站名称后,如本例中的youtube,在我点击enter键后,它会重新打印仍然包含我想要删除的内容的列表,然后如果我再次点击enter键,它会抛出:ValueError:list.remove(x):x不在列表中

有没有关于如何解决这个问题的建议,或者为我指出如何更好地解决这个问题的正确方向


Tags: in功能密码列表forinputifyoutube
3条回答

你可以试试这个:

deletePassword = input("Enter the password you want to delete: ")
passwords = [password for password in passwords if password[0] != deletePassword]

替换:

input("Enter the password you want to delete: ")

print("Enter the password you want to delete: ")

(您有两个input,只需删除第一个的值)

我建议您将密码存储为字典,而不是列表。这允许您按名称而不是数字索引(随着列表的每次修改而改变)查找/访问站点

passwords = [["facebook", "gGjjI%%%66"], ["youtube", "coYtF###12$"]]
passwords = dict(passwords)
# passwords is now {'facebook': 'gGjjI%%%66', 'youtube': 'coYtF###12$'}


if choice == '6':
    print("Enter the site name of the password you want to delete: ")
    for site in passwords:
        print(' ', site)
    deletePassword = input('>')

    if deletePassword in passwords:
        passwords.pop(deletePassword)

相关问题 更多 >

    热门问题