首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字典中整齐地打印字典

如何在字典中整齐地打印字典
EN

Stack Overflow用户
提问于 2016-10-23 22:42:21
回答 2查看 39关注 0票数 0

我使用以下代码:

代码语言:javascript
复制
sick = {"Carson": {"Reason": "Broken leg on P coy", "Expiry": "2017-1-4"}, "Jackson": {"Reason": "Fell over tree root on exercise", "Expiry": "2017-2-3"}, "Ben": {"Reason": "Tripped", "Expiry": "2018-7-6"}}

def showsick():
    print "=" * 10
    print "Personnel on sick:"
    for name, reason, expiry in sick.iteritems():
        print name, ": ", reason, "\nSick chit expires: ", expiry, "\n"
    print "=" * 10
    main()

若要尝试产生如下输出,请执行以下操作:

代码语言:javascript
复制
Carson: Broken leg on P coy
Sick chit expires: 2017-1-4

Jackson: Fell over tree root on exercise
Sick chit expires: 2017-2-3

Ben: Tripped
Sick chit expires: 2018-7-6

但我得到了"ValueError:需要两个以上的值才能打开包“。我尝试了许多不同的东西,包括玩json (非常简单)和pprint (再次简短地),以及其他一些小东西。但我不能让它起作用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-23 22:46:29

iteritems一次只生成两对-键和值,因此您不能在for循环中将其解压缩为三个项。

相反,你想做的是:

代码语言:javascript
复制
for name in sick:
     print name, ": ", sick[name]['Reason']
     print "Sick chit expires: ", sick[name]['Expiry']
票数 2
EN

Stack Overflow用户

发布于 2016-10-23 22:47:50

你生病的职能应该是:

代码语言:javascript
复制
def showsick():
    print "=" * 10
    print "Personnel on sick:"
    for person, nested_dict in sick.iteritems():
        print person, ': ', nested_dict['Reason']
        print 'Sick chit expires: ', nested_dict['Expiry']
    print "=" * 10

代码的问题是:dict.iteritems()返回(key, value)对的元组。因此,您可以用两个变量将其包装在for中,如下所示:

代码语言:javascript
复制
 for x, y in dict.iteritems():
 #   ^  ^    <-- only two variables, since .iteritems() returns tuple pair of 2

在您的代码中,y (在我的示例中)也是一个dict。为了从它访问值,您需要执行y[key]

样本输出:

代码语言:javascript
复制
>>> showsick()
==========
Personnel on sick:
Carson :  Broken leg on P coy
Sick chit expires:  2017-1-4
Ben :  Tripped
Sick chit expires:  2018-7-6
Jackson :  Fell over tree root on exercise
Sick chit expires:  2017-2-3
==========
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40208525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档