• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

python代码问题之字典

people={
    "alice":{
        "phone":"2341",
        "addr":"for drive 23"
    },
    "beth":{
        "phone":"9012",
        "addr":"bsr street 42"
    },
    "cecil":{
        "phone":"3158",
        "addr":"baz avenue 90"
    }
}
#针对电话号码和地址使用的描述性标签,会在打印时候用到
labels={
    "phone":"phone number",
    "addr":"address"
}


name=raw_input("Name:")


#查找电话号码还是地址?
request=raw_input("phone number(p) or address (a)?")


#使用正确的键:
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])

123003w588f77n3f18kv77.jpg

提示错误为:
File "c:\Users\DULU\Desktop\untitled-1.py", line 32, in
  (name.labels[key],people[name][key])

AttributeError: 'str' object has no attribute 'labels'
(这是什么意思,看不懂呀)

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

1、if name in people等价于if name in people.keys(),

你的代码里面people.keys()有:"alice"、"beth"、"cecil"。这3个都是string类型,string类型没有labels这个属性。

这也就是你的报错信息:'str' object has no attribute 'labels'。
string类型本身就没有labels这个属性,别告诉我你连这个都不知道。所以你后面引用name.labels[key]就会报错。
2、还有你print的参数个数不对,个人不太喜欢%,偏向于.format()。

我大致知道你想干嘛,就是输入姓名和p、a输出,结果是吧,最后几行你改下:
#使用正确的键:ifrequest=="p":key="phone"ifrequest=="a":key="addr"#如果名字是字典中的有效键方才打印信息:ifnameinpeople.keys():print"%s's%sis%s."%(name,key,people[name][key])#你可以尝试下面的.format()print"{0}'s{1}is{2}.".format(name,key,people[name][key])个人强烈建议,python代码不要写在一行,缩进才是它的规范。

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!