python:迭代字典按键排序为int

时间:2013-05-23 10:18:45

标签: python

我有一个python字典:

steps = {"5":{}, "1":{}}

我需要迭代这个,但是按键排序就好像它们是整数一样。密钥总是一个数字。

我试过了:

def get_key_as_int(key):
    return int(key)

for key in sorted(steps.items(), key=lambda t: get_key_as_int(t[0])):
    step = steps[key]

但是我收到了错误:

 unhashable type: 'dict'

2 个答案:

答案 0 :(得分:2)

>>> steps = {"5":{}, "1":{}}
>>> for k in sorted(steps, key=int):
        print k, steps[k]


1 {}
5 {}

答案 1 :(得分:0)

steps.items()返回键,值对(元组列表),而不仅仅是键。所以在您的代码中,您实际上是在尝试:

step = steps[ ('1', {}) ]

会引发错误,因为密钥不能包含可变项。

更正代码版本:

for key,step in sorted(steps.items(), key=lambda t: get_key_as_int(t[0])):
    #do something with step