python - 检查项目是否在列表列表中
问题描述
我正在制作密码保护程序,并且我有一个预先确定的列表用于测试目的,即:
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()
我需要弄清楚的是:
- 设置一个循环,使用 FOR 循环遍历列表列表中的所有项目。有人告诉我,考虑列表的最佳方式就像 Excel 电子表格。对于我的密码列表,我从 2 行和 2 列数据开始(不考虑用户可能添加的任何密码)。因此,passwords[0][0] 将等于第 1 行第 1 列中的项目(在我的情况下为“yahoo”)。我被告知要使用 range() 和 len() 的组合,这样我就可以遍历每个“行”,而不管列表有多长。但是,我不确定如何做到这一点。
- 一旦我正确设置了 FOR 循环,我需要遍历每个“行”并使用条件逻辑(例如“如果...”)将用户的 passwordToLookup 输入与相应的网站名称进行比较。因为我知道网站名称存储在第一个“列”中,所以它可能看起来像这样:passwords[i][0]。但再一次,我所有的尝试都失败了,我需要指导。
解决方案
使用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)]
推荐阅读
- android - 我可以以编程方式选择所有 Whatsapp 联系人,然后单击即可向他们发送消息
- jwt - 文档标题中不存在邮递员集合授权
- aforge - AForge.net 详尽模板匹配
- javascript - JS 应该选择我们使用 selected="selected" 的第二个选项
- javascript - 将父数组元素和子数组推入javascript中的新数组
- powershell - PowerShell 脚本:按对象大小(以 MB 为单位)排序
- android - 格式化为
带有空格和换行符的标签 Android
- asp.net - 在 ASP.Net 的母版页中创建注销按钮
- docker - docker命令相关的查询
- c++11 - 在 solaris 11 中为 gcc 设置 c++11 std