我试图更好地理解我的下面的代码,为什么会出现某些输出。
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
我理解为什么一切都发生在“哟”的最后一行。为什么“哟”是打印出来的唯一选择,我的代码不应该只打印字典中的任何键吗?
答案 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
将会是一个更快的测试。)