我目前正在学习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'
谢天谢地!
答案 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)
您要做的是使用分离的数据和函数的经典过程编程 - 为函数提供操作它们的数据。这有时会导致复杂的数据结构。
我建议在这种情况下使用面向对象编程。为一个人写一个类(它可以是基于字典来捕获任何信息)。