结构如下:
{ID: [name, last name, login, password}
dic={'0002': ['Frank', 'Castle', 'franstle', 'franny.casty'], '0001': ['Juan', 'Botero', 'jbotero', 'snf23jn4'], '0003': ['Logan', 'James', 'jagan', '87654321']}
所以我要求某人登录并获取它所在位置的密钥,如下所示:
key=''.join([k for k, v in dic.items() if login in v])
使用此键,我创建了一个由dic [key]中的值组成的列表,以便询问密码并进行比较:
login=input('Login: ')
lista=[]
key=''.join([k for k, v in dic.items() if login in v])
lista=dic[key]
但是当登录不是来自dic的任何值时,显示:
Login: nada
Traceback (most recent call last): File "test.py", line 23, in <module>
list=dic[key] KeyError: ''
我应该怎么做,如果登录不在dic中,我想得到'无'
答案 0 :(得分:1)
检查
if key in dic
像这样:
dic={'0002': ['Frank', 'Castle', 'franstle', 'franny.casty'], '0001': ['Juan', 'Botero', 'jbotero', 'snf23jn4'], '0003': ['Logan', 'James', 'jagan', '87654321']}
login=input('Login: ')
lista=[]
key=''.join([k for k, v in dic.items() if login in v])
if key in dic:
lista=dic[key]
print(lista)
else:
print(None)
答案 1 :(得分:0)
我应该怎么做,如果登录不在dic中,我想得到'无'
对于您的代码,可能是:
key = ''.join([k for k, v in dic.items() if login in v]) or None
或更好:
lista = dic.get(key)
答案 2 :(得分:0)
使用get
方法:
get(key [,default])
Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this
方法永远不会引发KeyError。