2017-06-21 228 views
1

我正在采用的编码课程中的一个项目要求学生完成具有多个选项和菜单的密码保护程序的代码。我遇到困难的部分是根据与之相关的网站打印密码。在嵌套列表中查找项目

密码保存在一个列表,像这样:

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

我正在尝试后,做的是找到此列表中的一个项目,由用户输入的地址,并打印项目直接。用户将被要求输入一个网站,列表中的以下项目(密码)将被打印。

但是,出于测试目的,我还需要检查相关网站的密码是否在“密码”列表中。

if passwordToLookup in passwords: 
      print(passwords.index(passwordToLookup)) 

由于某种原因,这总是返回“False”。这是因为我正在搜索的列表是加密的吗?如果是这样,我该如何在此列表中搜索特定项目?我怎样才能打印网站后列表中的第二项?

+1

看起来你需要使用'dict',这是非常容易的改造这变成了一个'dict'。 – AChampion

+0

这个问题没有加密,因为你已经提交了它。 –

+0

'[p为你,p在密码如果你=='在此处插入所需的站点']' – blacksite

回答

0

可以遍历列表,并检查该网站:

for elem in passwords: 
    if passwordToLookup in elem: 
     print # elem[0] for the website or elem[1] for the password 

不知道为什么你要打印索引,但你也可以,如果你使用passwords.index(elem)想要它。

+0

谢谢!这是我需要的解决方案! – Yobby

+0

很高兴帮助!如果您通过单击问题左侧的投票箭头下方的勾号发现它有用,请不要忘记接受答案。 –

0

您的问题是,您目前只查找列表中的密码,但您需要遍历密码并测试其中的单个列表。你可以使用类似这样

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

def getPasswordIndex(): 
    for list in passwords: 
     if "CoIushujSetu" in list: 
      return list.index("CoIushujSetu") 
     else: 
      print(False) 

print(getPasswordIndex()) 

#returns False then 1 so it's the second item in the second list """ 

print(passwords[1][1]) 

#prints "CoIushujSetu" 
0

使用字典key: value双)和你的代码会像这样简单:

passwords = [["yahoo","XqffoZeo"],["google","CoIushujSetu"]] 
pass_dict = dict(passwords) 

site = input("Insert site: ") 

if site in pass_dict:  # searching only in keys 
    print(pass_dict[site]) # print value of that key 
+0

不幸的是,这不是一个选项。正如我解释的,整个代码不是我的。名单必须保持现状。 – Yobby

+0

@Yobby - 没问题 - 我编辑我的答案以满足您的需求 - 我只是从您的嵌套列表中创建一个新的字典。 – MarianD

1

使用字典

# convert list into dictionary 
d = dict(tuple(passwords)) 

try: 
    d[passwordToLookup] 
except KeyError: 
    # what to do if no password available 
else: 
    # what to do if available 

或使用默认的GET方法字典

return d.get(passwordToLookup, default=None) 

没有字典

values = list(zip(*passwords)) 

try: 
    the_password = values[1][values[0].index(passwordToLookup)] 
except ValueError: 
    # what to do if no password available 
else: 
    # what to do if available 
0

你需要做的是通过列表这样的循环:

def ifPassExist(): 
    for password in passwords: 
     if passwordToLookUp in password: 
      return passwords.index(password)