在Python中搜索词典

时间:2012-04-27 07:22:49

标签: python dictionary

我目前正在学习Python的基础知识,我需要创建一个包含十个人的名称数据库,包括其他详细信息(电话号码,地址,生日和三个兴趣)。

梦想是在提示输入人名时,他们的所有细节都会出现。或者在输入name['phone']后,会出现人员姓名和电话号码。地址,生日和兴趣相同。我被告知我必须能够从命令行获取名称和相关字段(电话,爱好等),使用argv列表,但我不知道如何做到这一点。任何帮助将非常感激!

以下是我为字典编写的一个例子:

friends = {'Matt ' : {'phone' : '13579', 
                      'birthday' : '2 Dec', 
                      'address' : 'Sydney',
                      'interests' : ['a', 'b', 'c' ]},

           'Tim ' : {'phone' : '24680', 
                     'birthday' : '19 Feb', 
                     'address' : 'Honolulu',
                     'interests' : ['x', 'y', 'z' ]},

           'Kate ' : {'phone' :'12345', 
                      'birthday' : '30 Jun', 
                      'address' : 'Beijing',
                      'interests' : ['q', 'w', 'e' ]}
           }

name = raw_input ('Please enter search criteria: ')

if name in friends: 
    print 'yes'
else: 
    print 'no data'

谢天谢地!

4 个答案:

答案 0 :(得分:2)

首先,您必须以一致的方式使用字典键。我的意思是,要么所有这些都可以从资本开始,要么所有这些都可能是大写或小写。此外,在键的开头或结尾处有空格不是一个好的选择。

假设您有以下关键结构:

friends = {'Matt' : {'phone' : '13579', 
                  'birthday' : '2 Dec', 
                  'address' : 'Sydney',
                  'interests' : ['a', 'b', 'c' ]},

       'Tim' : {'phone' : '24680', 
                 'birthday' : '19 Feb', 
                 'address' : 'Honolulu',
                 'interests' : ['x', 'y', 'z' ]},

       'Kate' : {'phone' :'12345', 
                  'birthday' : '30 Jun', 
                  'address' : 'Beijing',
                  'interests' : ['q', 'w', 'e' ]}
       }

由于所有键都以大写字母开头且在开头或结尾没有空格,因此您可以执行以下操作:

name = raw_input('Please enter search criteria: ')
name = name.strip() # remove whitespace at the beginning and the end of the string
name = name.capitalize() # capitilize the first letter

当然,您可以在一行中调用字符串函数:

 name = name.strip().capitalize()

可以使用friends[name]['<key>']获取具体信息。

答案 1 :(得分:1)

在这里遇到问题,你的密钥在最后都有一个空格,如'Matt '。 而且它们不是小写的。

答案 2 :(得分:0)

删除

name = name.lower()

因为您的字典没有包含所有小写字母的键,或者更改字典以包含所有小写字母。

答案 3 :(得分:0)

您要做的是使用分离的数据和函数的经典过程编程 - 为函数提供操作它们的数据。这有时会导致复杂的数据结构。

我建议在这种情况下使用面向对象编程。为一个人写一个类(它可以是基于字典来捕获任何信息)。