字典/数据库键值检索

use*_*310 2 python dictionary

正如先前(但不同)的问题所述,我正在尝试用Python找出一个"简单"的字典/数据库,它将从十个列表中检索一个名称,并提供所请求的信息.即输入可以是'John phone',其中输出是'John的电话号码是0401'(我已经拍了拍); 但我也可以输入'John Birthday'或'John hobbies',输出也会对应.

因为我是一个完整的菜鸟,我甚至不知道从哪里开始.几个小时的谷歌搜索和阅读讲义到目前为止没有任何结果.我觉得它与多重参数%函数有关,但我们的讲师真的不清楚如何进一步研究它.到目前为止,我所拥有的是:

#!/usr/bin/python

friends = {'John': {'phone' : '0401',
                    'birthday' : '31 July',
                    'address' : 'UK',
                    'interests' : ['a', 'b', 'c']},
           'Harry': {'phone' : '0402',
                    'birthday' : '2 August',
                    'address' : 'Hungary',
                    'interests' : ['d', 'e', 'f']}}
name = raw_input ('Please enter search criteria: ')
if name in friends: 
    print "%s's phone number is: %s" % (name, friends[name]['phone'])
else: 
    print 'no data'
Run Code Online (Sandbox Code Playgroud)

我还想使用'while'功能,因此一旦获得该信息,prog就不会关闭,但不确定这是否合适.任何指针都会很棒,即使它是"尝试这种"的暗示,或指向相关网站的链接.

NPE*_*NPE 5

由于这是家庭作业,我将限制我的答案一些提示:

  1. tok = name.split()会分成name一个单词列表,所以'John address'会变成['John', 'address'].
  2. 您可以将单个单词作为tok[0]和访问tok[1],并使用它们进行索引friends以获取相关人员,然后获取相关字段.
  3. 我认为将输入/搜索逻辑包装到while循环中没有问题,这样用户就可以执行多个查询.唯一要弄清楚的是你将如何退出该循环.