字典输出问题

时间:2017-03-05 15:36:58

标签: python python-2.7 dictionary output

我试图更好地理解我的下面的代码,为什么会出现某些输出。

stuff = {'purple':[0, 106, 506, 'SI', 'Lauren'], 'blue':'Cornflower', 'yo':'green'}
stuff_keys_sorted = sorted(stuff.keys())
print sorted(stuff.keys())
for k in stuff_keys_sorted:
    if type(stuff[k]) == type(['hello', 'goodbye']):
        for item in stuff[k]:
            print item
print k

目前的输出是:

0
106
506
SI
Lauren
yo

我理解为什么一切都发生在“哟”的最后一行。为什么“哟”是打印出来的唯一选择,我的代码不应该只打印字典中的任何键吗?

1 个答案:

答案 0 :(得分:2)

您将循环的print k语句放在之外。 for循环在Python到达该语句时完成,然后只打印k的最后一个值。

如果您想打印每个键,则需要将其作为循环的一部分:

for k in stuff_keys_sorted:
    # ...
    print k

您的代码的其他一些注释:

  • 您不必致电.keys()stuff_keys_sorted = sorted(stuff)足以获得排序的字典键序列。
  • 要测试特定类型,请使用isinstance()而不是type(..) == type(..)

    if isinstance(stuff[k], list):
    

    即使您确实需要使用type(),也不需要包含内容的列表; type([])就足够了。但是使用type(..) is list也是如此(因为type([])的结果是list,并且每个Python内置类型只有一个副本,因此使用is将会是一个更快的测试。)