2015-07-28 3 views
0

структура такова:Как сравнить значение из словаря

{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]) 

С помощью этого ключа я создал список, составленный из значений в выпо [ключ], чтобы задать для пароля и сравнения:

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, я хотел бы, чтобы получить «Нет»

ответ

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) 
0

Что я должен делать, если Логин не в DIC, я хотел бы чтобы получить 'Нет'

Для вашего кода, это может быть:

key = ''.join([k for k, v in dic.items() if login in v]) or None 

Или лучше:

lista = dic.get(key) 
0

Uset get метод:

прибудете (клавиша [ , по умолчанию])

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

Смежные вопросы