我正在制作密码保护程序,并且有一个用于测试目的的预定列表,
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()
我需要弄清楚的是:
答案 0 :(得分: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)]
答案 1 :(得分:0)
Python使许多事情变得容易,其中之一是遍历列表(或Iterator)
假设这是您的列表列表:
passwords = [["yahoo","XqffoZeo"],["google","CoIushujSetu"], ['StackOverflow','uesodsiom'], ['Facebook', 'sdhf9wk']]
您可以遍历如下列表:
for lst in passwords:
print(lst)
['yahoo', 'XqffoZeo']
['google', 'CoIushujSetu']
['StackOverflow', 'uesodsiom']
['Facebook', 'sdhf9wk']
在这种情况下,您不需要range或len,尽管在其他情况下它们可能会有用。
如果只希望嵌套列表中的一个元素是您的网站,该怎么办?然后您可以索引:
for lst in passwords:
print(lst[0])
yahoo
google
StackOverflow
Facebook
如果需要密码,请使用lst [1]。索引从0开始。
请注意,列表的结构应保持不变:第一个元素是网站名称,第二个元素是密码。
现在,据我了解,您要检查某个网站是否与密码匹配
第一种方法:
website = 'Facebook'
passwordToLookup = 'sdhf9wk'
for lst in passwords:
if lst[0] == website and lst[1] == passwordToLookup:
print(True)
True
解压缩密码列表中每个元素的第二种方法:
for websi, password in passwords:
if websi == website and password == passwordToLookup:
print(True)
True
开箱示例:
x, y = [1, 2]
print(x)
1
print(y)
2