如何比较字典中的值

时间:2015-07-28 05:51:12

标签: python dictionary

结构如下:

{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中,我想得到'无'

3 个答案:

答案 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。

检查https://docs.python.org/2/library/stdtypes.html