首页 > 解决方案 > 检查项目是否在列表列表中

问题描述

我正在制作密码保护程序,并且我有一个预先确定的列表用于测试目的,即:

passwords = [["yahoo","XqffoZeo"],["google","CoIushujSetu"]]

我给用户多种选择。选项 #2 让他们可以选择查找密码

if choice == '2':  # Lookup a password
    print("Which website do you want to lookup the password for?")
    for keyvalue in passwords:
        print(keyvalue[0])
    passwordToLookup = input()

我需要弄清楚的是:

  1. 设置一个循环,使用 FOR 循环遍历列表列表中的所有项目。有人告诉我,考虑列表的最佳方式就像 Excel 电子表格。对于我的密码列表,我从 2 行和 2 列数据开始(不考虑用户可能添加的任何密码)。因此,passwords[0][0] 将等于第 1 行第 1 列中的项目(在我的情况下为“yahoo”)。我被告知要使用 range() 和 len() 的组合,这样我就可以遍历每个“行”,而不管列表有多长。但是,我不确定如何做到这一点。
  2. 一旦我正确设置了 FOR 循环,我需要遍历每个“行”并使用条件逻辑(例如“如果...”)将用户的 passwordToLookup 输入与相应的网站名称进行比较。因为我知道网站名称存储在第一个“列”中,所以它可能看起来像这样:passwords[i][0]。但再一次,我所有的尝试都失败了,我需要指导。

标签: pythonpython-3.xlistloops

解决方案


使用filter,可以在列表中选择匹配的元素。

使用列表推导,选择每个元素的第二个元素(密码)。

passwords = [["yahoo","XqffoZeo"],["google","CoIushujSetu"]]
website_to_lookup = input()
[e[1] for e in filter(lambda i:i[0]==website_to_lookup,passwords)]

如果每个网站有多个密码,请使用切片将它们全部返回:[e[1:] for e in filter(lambda i:i[0]==website_to_lookup,passwords)]


推荐阅读