2015-01-30 4 views
0

Я новичок в словарях Python. Я делаю простую программу, в которой есть словарь, который включает в себя четыре имени в качестве ключей и соответствующие возрасты как значения. То, что я пытаюсь сделать, состоит в том, что если пользователь вводит имя, программа проверяет, находится ли он в словаре, и если да, то он должен показывать информацию об этом имени.Как выполнить поиск по словарям в Python

Это то, что я до сих пор:

def main(): 
    people = { 
     "Austin" : 25, 
     "Martin" : 30, 
     "Fred" : 21, 
     "Saul" : 50, 
    } 

    entry = input("Write the name of the person whose age you'd like to know, or write 'ALL' to see all names and ages: ") 
    if entry == "ALL": 
     for key, value in people.items(): 
      print ("Name: " + key) 
      print ("Age: " + str(value) + "\n") 
    elif people.insert(entry) == True: 
       print ("It works") 

main() 

Я попытался поиска по словарю, используя .index() как я знаю, что это используется в списках, но это не сработало. Я также попробовал проверку this post, но я не счел это полезным.

Мне нужно знать, есть ли какая-либо функция, которая может это сделать.

+0

Зачем вам нужна функция? people [entry] – lxx

+1

Вы можете найти значение в python dict, используя этот синтаксис: dict [key], который поднимет KeyError, если ключ не находится в dict, например. люди ['Austin'], или вы можете использовать метод get (key), который будет возвращать None, если ключ не находится в dict, например. people.get ("Остин") – neiht

ответ

4

Если вы хотите знать, если key является ключевым в people, вы можете просто использовать выражение key in people, как в простой:

if key in people: 

И проверить, если это не a ключ в people:

if key not in people: 
2

достаточно

if entry in people: 
    print ("Name: " + entry) 
    print ("Age: " + str(people[entry]) + "\n") 
0

Вы можете напрямую ссылаться на значения. Например:

>>> people = { 
... "Austun": 25, 
... "Martin": 30} 
>>> people["Austun"] 

Или вы можете использовать people.get(<Some Person>, <value if not found>).

0

Python также поддерживает перечисление, чтобы перебрать по dict.

for index, key in enumerate(people): 
    print index, key, people[key] 
1

Вы можете сделать это:

#!/usr/bin/env python3  

people = { 
    'guilherme': 20, 
    'spike': 5 
} 

entry = input("Write the name of the person whose age you'd like to know, or write 'ALL' to see all names and ages: ") 

if entry == 'ALL': 
    for key in people.keys(): 
     print ('Name: {} Age: {}'.format(key, people[key])) 

if entry in people: 
    print ('{} has {} years old.'.format(entry, people[entry])) 
else: 
    # you can to create a new registry or show error warning message here. 
    print('Not found {}.'.format(entry)) 
0

Из всех ответов здесь, почему бы не:

try: 
    age = people[person_name] 
except KeyError: 
    print('{0} is not in dictionary.'.format(person_name)) 

Каноническое способ проверить, если что-то есть в словаре, в Python является попытаться получить к нему доступ и обработать сбой - It is easier to ask for forgiveness than permission (EAFP).

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