为何这段Python字典遍历代码的输出顺序不符合预期?
问题原因与解决办法
为什么输出顺序不符?
你的代码逻辑是每遍历字典的一个键,就连续执行两次打印操作:先输出键值对的空格分隔形式,紧接着输出带冒号的格式。所以处理完apple会先打出它的两行内容,再处理cherry打出它的两行,自然和预期的“先全打空格格式、再全打冒号格式”顺序不一致。
修正代码
要实现预期输出,需要分两次遍历字典:第一次只输出空格分隔的键值对,第二次只输出带冒号的格式:
D = {"apple":44, "cherry":"game"} # 第一次遍历:打印空格分隔的键值对 for x in D: print(x, D[x]) # 第二次遍历:打印带冒号的键值对 for x in D: print(f"{x}: {D[x]}")
补充说明:Python 3.7及以上版本的字典会保留键的插入顺序,所以两次遍历的键顺序完全一致,能保证输出顺序符合预期。
内容的提问来源于stack exchange,提问作者Kyungjin Kwak
相关产品推荐
相关产品推荐

