我有一个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'
答案 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