2013-11-08 4 views
0

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

animal=dict() 
animal['1']={'ID': '21012', 'plot':4, 'year':'1993', 'species': 'DM', 'weight': 42, 'hindfoot': 36, 'tag':'1EA0F9'} 
animal['2']={'ID':'22012', 'plot':4, 'year':'1995', 'species': 'DM', 'weight': 31, 'hindfoot': 37, 'tag':'0D373C'} 
animal['3']={'ID': '23012', 'plot':17, 'year':'1996', 'species': 'DM', 'weight': 25, 'hindfoot': 37, 'tag':'64C6CC'} 
animal['4']={'ID': '24012','plot':21, 'year':'1996', 'species': 'PP', 'weight': 26, 'hindfoot': 22, 'tag':'1F511A'} 
animal['5']={'ID': '25012', 'plot':22, 'year':'1997', 'species': 'DM', 'weight': 53, 'hindfoot': 35, 'tag':'2624'} 
animal['6']={'ID': '26012', 'plot':17, 'year':'1997', 'species': 'OT', 'weight': 14, 'hindfoot': 18, 'tag':'2863'} 
animal['7']={'ID': '27012', 'plot':18, 'year':'1997', 'species': 'OT', 'weight': 23, 'hindfoot': 21, 'tag':'2913'} 
animal['8']={'ID': '28012', 'plot':13, 'year':'1998', 'species': 'OT', 'weight': 36, 'hindfoot': 19, 'tag':'2997'} 
animal['9']={'ID': '29012', 'plot':6, 'year':'1999', 'species': 'PM', 'weight': 20, 'hindfoot': 20, 'tag':'406'} 
animal['10']={'ID': '30000', 'plot':14, 'year':'2000', 'species': 'DM', 'weight': 41, 'hindfoot': 34, 'tag':'156'} 

result=dict() 

def search_data(): 
    key = raw_input ('Please Input Search Criteria:') 
    for k in animal.items(): 
     if key in animal['v']: #if k is in sub dictionary 
      print animal ['v'] #print sub dictionary 
      return results; 


search_data(); 

Так что, если вы вводите идентификационный номер, программа должна напечатать то, что когда-либо суб словари имеют, что идентификационный номер.

+0

Что ошибка это дает вам? –

+0

У вас на самом деле есть несколько подзадач с одинаковым идентификационным номером? В противном случае просто используйте ID в качестве ключа. В любом случае использование целых чисел в качестве ключей в dict является неуклюжим и бессмысленным, если вы делаете это, используйте 'list' для хранения всех ваших' dict'. – roippi

ответ

0

dict.items возвращает ключи, пары значений и, как вы хотите, сопоставить 'ID' каждого подкаталога с пользовательским вводом, поэтому вы должны проверить, subdict['ID'] == key.

def search_data(): 
    key = raw_input ('Please Input Search Criteria:') 
    for k, subdict in animal.items(): 
     if key == subdict['ID']: 
      return k, subdict #return key and the sub-dictionary 


print search_data(); 

Демо:

Please Input Search Criteria:29012 
('9', {'plot': 6, 'weight': 20, 'year': '1999', 'ID': '29012', 'tag': '406', 'hindfoot': 20, 'species': 'PM'}) 
Смежные вопросы