2016-04-29 45 views
2

我有這個字典(dic)的鍵是字符串,但字符串實際上只是數字。似乎無法遍歷鍵是數字字符串的已排序字典。你如何排序字典迭代?

我不能找到一種方法對有序串迭代(因爲分類詞典不會排序數字)

for j in sorted([int(k) for k in dic.iteritems()]): 
    print dic[str(j)] #converting the integer back into a string for the key 

它給了我

KeyError異常

直覺上這應該工作,但我只是不明白爲什麼它沒有。

回答

8

dict.iteritems()返回2元組,它不能轉換爲整數。

for j in sorted(dic, key=int): 
    print dic[j] 
+1

非常真實的,但這樣會導致'TypeError',而不是一個'KeyError'。 –

+2

@LukasGraf:假設提問者寫的是準確的。 –

+0

Omg。知道這太令人沮喪了。爲什麼會有這樣做。我甚至不知道你可以做排序(dic,key = int) – Tom

0

除了使用key=int你也可以稍微修改現有的理解:

for _, value in sorted((int(key), dic[key]) for key in dic): 
    print(value) 

它不是很好,但如果你想解壓,不僅你的鑰匙,而且你的價值觀是一種替代方法。


隨着iteritems你需要一個額外的拆包的理解:

for _, value in sorted((int(key), value) for key, value in dic.iteritems()): 
    print(value)