2016-04-29 102 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)