len(d),返回字典d里面的键值对的数量。
d[k],返回关联到键k上的值。
d[k]=v ,将值v关联到k上。
del d[k] ,删除含有k键键值对。
k in d ,检查d中是否有键值为k的项。
键值: 字典的键值不一定是整形的数据,也可以是其他不可变的类型,如浮点型,字符串,元组。
成员资格: k in d(字典),查找出来的是键,不是值。但是 k in l (列表),查出来的是值。
>>>x={}
>>>x[43]='lei'
>>>x
{43:'lei'}
一个数据库的代码:
#-*- coding: UTF-8 -*-
#简单的数据库
#使用人名作为字典,每个人用另一个字典来表示
people={'wang':{'phone':'1112','addr':'suihua'},'shanshan':{'phone':'1234','addr':'suihua'} 'li':{'phone':'2344','addr':'simi'}}
#针对电话号码和地址使用的描述性标签,会在打印的时候用到
labels={'phone':'phone number','addr':'address'}
name=raw_input('name:')
#查找电话号码还是地址,使用正确的键:
#使用正确的键:
key=request
if request=='p':key='phone'
if request=='a':key='addr'
#如果名字有效,才打印信息:
if name in people:print '%s s %s is %s.' %(name,labels[key],people[name][key])
刚刚看到有的地方要加上 key=request,加上了测试,还是不成功,还是这句报错,继续标记,以后解决。
标注:
刚刚又找出了这个问题的一点原因,
name=raw_input('name:')
#查找电话号码还是地址,使用正确的键:
#使用正确的键:
key=request
if request=='p':key='phone'
if request=='a':key='addr'
这个里面那些变量有点问题,说实话,我真是怀疑是教材的错误,还是我们的编辑器不一样。把这段改为下面的就可以了,虽然后面也出现了错误,但是这一段是可以运行过去的:
name=raw_input('name:')
#查找电话号码还是地址,使用正确的键:
#使用正确的键:
key=name
if name=='p':key='phone'
if name=='a':key='addr'
这样就好了,纳闷,这个教材的作者是不是直接拿东西copy的啊。
改过之后的代码应该是这段才是正确点的:
#-*- coding: UTF-8 -*-
#简单的数据库
#使用人名作为字典,每个人用另一个字典来表示
people={'wang':{'phone':'1112','addr':'suihua'},'shanshan':{'phone':'1234','addr':'suihua'} 'li':{'phone':'2344','addr':'simi'}}
#针对电话号码和地址使用的描述性标签,会在打印的时候用到
labels={'phone':'phone number','addr':'address'}
name=raw_input('name:')
#查找电话号码还是地址,使用正确的键:
#使用正确的键:
key=name
if name=='p':key='phone'
if name=='a':key='addr'
#如果名字有效,才打印信息:
if name in people:print “%s‘s %s is %s.” %(name,labels[key],people[name][key])
不过这段的最后一句还是报错了:
Traceback (most recent call last):
File "字典的操作.py", line 18, in <module>
if name in people:print "%s's %s is %s." %(name,labels[key],people[name][key])
KeyError: 'wang'
还得继续标记,有谁知道为什么,还请不吝赐教。