[英]Wrong output order in Python
我的代碼有問題。 它沒有打印出我想要的方式。
print("Hello Herp, welcome to Derp v1.0 :)")
inFile = input("Herp, enter symbol table file: ")
symTbl = {}
for line in open(inFile):
i = line.split()
symTbl[i[0]] = int(i[1])
print("Derping the symbol table (variable name => integer value)...")
for var1 in symTbl:
print(var1 + " => " + str(symTbl[var1]))
當我打開文本文件時,它打印出來:
z => 30
y => 20
x => 10
哪個不對,我希望有這樣的輸出:
x => 10
y => 20
z => 30
原始文本文件是這樣的:
x 10
y 20
z 30
您需要使用有序詞典。 當您從字典中讀取密鑰(在您的情況下使用for循環)時,無法保證您將獲得密鑰的順序。 OrderedDict
將始終按照輸入的順序返回鍵。
from collections import OrderedDict
symTbl = OrderedDict()
OrderedDict保留插入順序,不按鍵排序。 有時這就是人們想要的東西,有時卻不是。
如果您只需要一次排序鍵,您可以執行以下操作:
for key, value in sorted(list(symTbl.items())):
print('{} ==> {}'.format(key, value))
如果您需要多次排序值(IOW,在循環內),最好使用treap,紅黑樹或(在磁盤上,以防您的值不適合內存)BTree。 EG: http : //en.wikipedia.org/wiki/Treap
或者,您可以對字典進行排序:
for var1 in sorted(symTbl):
print(var1 + " => " + str(symTbl[var1]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.