Python 如何使用内置词典整齐地打印词典

Python 如何使用内置词典整齐地打印词典,python,dictionary,printing,nested,Python,Dictionary,Printing,Nested,我使用以下代码: 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 "=" * 1

我使用以下代码:

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()
要尝试生成如下输出:

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:需要2个以上的值才能解包”。我尝试了许多不同的方法,包括使用json(非常简单)和pprint(同样简单),以及其他一些小方法。虽然iteritems一次只生成两对-键和值,但我无法使其工作,因此在
for
循环中,您无法将其解包为三个项

相反,您希望执行以下操作:

for name in sick:
     print name, ": ", sick[name]['Reason']
     print "Sick chit expires: ", sick[name]['Expiry']

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

相反,您希望执行以下操作:

for name in sick:
     print name, ": ", sick[name]['Reason']
     print "Sick chit expires: ", sick[name]['Expiry']

您的病态功能应该如下所示:

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()
返回
(键、值)
对的元组。因此,您可以将其包装在
for
中,只需两个变量:

 for x, y in dict.iteritems():
 #   ^  ^    <-- only two variables, since .iteritems() returns tuple pair of 2

您的病态功能应该如下所示:

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()
返回
(键、值)
对的元组。因此,您可以将其包装在
for
中,只需两个变量:

 for x, y in dict.iteritems():
 #   ^  ^    <-- only two variables, since .iteritems() returns tuple pair of 2

谢谢你的解释,你的答案是教育性的。谢谢你的解释,你的答案是教育性的