繁体   English   中英

字典中的Python打印元素产生错误

[英]Python Printing Elements from a dictionary produces error

我为使用循环读取的用户名创建了此代码块。

users = {
    'aeinstein': {
        'first':'albert',
        'last':'einstein',
        'location':'princeton'
        },
    'mcurie': {
        'first':'marie',
        'last':'curie',
        'location':'paris',
        }
    }

for username, user_info in users.items():
    print("\nUsername: " + username)
    full_name = user_info['first'], user_info['last']
    location = user_info['location']

    print("\tFull name:" + full_name.title())
    print("\tLocation:" + location.title())

现在,如果您在for循环中观察到以下行

full_name = user_info['first'], user_info['last']

我期望这1会附加值albert einsteinmarie curie ,但这会产生错误

print("\tFull name:" + full_name.title())
AttributeError: 'tuple' object has no attribute 'title'

但是我的方法为什么错误,因此以下内容正确...

full_name = user_info['first'] + " " + user_info['last']

产生以下结果

Username: aeinstein
    Full name:Albert Einstein
    Location:Princeton

Username: mcurie
    Full name:Marie Curie
    Location:Paris

1 从注释:所以当您说print("hello", "world")这种类型的字符串连接是正确的,但在我所显示的示例中不起作用吗?

表达式user_info['first'], user_info['last']创建两个元素的元组(在这种情况下,这些元素是字符串)。 元组对象没有title方法,但是如果您像使用user_info['first'] + " " + user_info['last']一样与plus运算符连接,则会创建一个String而不是一个元组,以便可以使用标题方法

通过添加,在操作user_info['first'], user_info['last']你告诉Python的,你给它两个字符串的元组。 通过使用+运算符,您只需将两个字符串连接为一个字符串。

 full_name = user_info['first'], user_info['last'] 

我希望这会附加albert einsteinmarie curie的价值[…]

您的期望是错误的。

但是我的方法为什么错误,因此以下内容正确...

 full_name = user_info['first'] + " " + user_info['last'] 

因为+是字符串连接运算符,并且,是不是。

正如其他几个人回答的那样,您需要使用

full_name = user_info ['first'] +“” + + user_info ['last']

要么

full_name =“%s%s”%(user_info ['first'],user_info ['last'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM