字典的操作

在很多的方面上,字典的操作和序列还是很相似的,
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])   


刚刚测试很多遍,那个request 总是显示说没有定义,不成功,只有前半部分可以执行,后面的就是那个问题。标记一下,以后继续测试。

刚刚看到有的地方要加上 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'

还得继续标记,有谁知道为什么,还请不吝赐教。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值