Python 字典/数据库键值检索
如前一个(但不同的)问题所述,我正在尝试用Python构建一个“简单”的字典/数据库,它将从十个列表中检索一个名称,并包含请求的信息。i、 e.输入可以是“John phone”,其中输出是“John的电话号码是0401”(我有记录);但我也可以输入“John Birth”或“John Habiops”,输出结果会相应 因为我是个彻头彻尾的傻瓜,我甚至不知道从哪里开始。几个小时的谷歌搜索和仔细研读课堂讲稿到目前为止没有任何结果。 我觉得这与多参数%函数有关,但我们的讲师真的不清楚如何进一步。 到目前为止,我得到的是:Python 字典/数据库键值检索,python,dictionary,Python,Dictionary,如前一个(但不同的)问题所述,我正在尝试用Python构建一个“简单”的字典/数据库,它将从十个列表中检索一个名称,并包含请求的信息。i、 e.输入可以是“John phone”,其中输出是“John的电话号码是0401”(我有记录);但我也可以输入“John Birth”或“John Habiops”,输出结果会相应 因为我是个彻头彻尾的傻瓜,我甚至不知道从哪里开始。几个小时的谷歌搜索和仔细研读课堂讲稿到目前为止没有任何结果。 我觉得这与多参数%函数有关,但我们的讲师真的不清楚如何进一步。 到
#!/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'
我还想使用“while”函数,这样程序不会在给出信息后立即关闭,但不确定这是否合适。
任何提示都是很好的,即使是一个“试试这个”的提示,或者是一个相关网站的链接 因为这是家庭作业,所以我的回答仅限于一些提示:
tok=name.split()
将name
拆分为一个单词列表,因此的“约翰地址”将变成[“约翰”、“地址”]
tok[0]
和tok[1]
访问单个单词,并使用它们索引到friends
,以获取相关人员,然后是相关字段while
循环中没有问题,这样用户就可以执行多个查询。唯一需要弄清楚的是如何退出循环听aix回答问题的第一部分。对于第二部分,我建议用户输入一个退出值(可能是“退出”),用户可以输入退出程序,然后让while循环继续运行,而输入不是该值。根据您的示例代码,“John phone”不起作用,因为它实际上会查找“John phone”作为名称(并且“phone”是硬编码的)。如需说明,请尝试以下代码:
response = raw_input('Please enter search criteria: ').split()
try:
print "%s's %s is %s" % (response[0], response[1], friends[response[0]][response[1]])
except KeyError:
print 'no data'
split()分别获取每个参数,然后可以使用[0]和[1]引用这些参数(依此类推)。您已经在正确的轨道上使用了%替换,但这种方法将使其更易使用和可读性
关键是您不需要检查名称是否匹配(或条件是否匹配)。假设它会在那里——如果出现异常情况(没有找到匹配项),它可以按预期返回“无数据”
Please enter search criteria: John phone
John's phone is 0401
Please enter search criteria: Harry birthday
Harry's birthday is 2 August
在
''
上拆分通常是个坏主意,只需使用.split()
;然后,如果用户键入johnaddress
(两个空格,加上一个尾随空格),结果仍然是['John','address']
匿名投票人说:耐心等待!键入注释需要一段时间。:)