似乎无法遍历排序字典,其中键是数字字符串。如何对字典进行排序以进行迭代?

时间:2016-04-29 20:08:21

标签: python sorting dictionary

我有这个字典(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异常

直观地说,这应该有效,但我不明白为什么它没有。

2 个答案:

答案 0 :(得分:8)

dict.iteritems()返回2元组,无法将其转换为整数。

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

答案 1 :(得分: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)