0

私はpython辞書を持っています:

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

これを繰り返す必要がありますが、キーが int であるかのようにソートされています。キーは常に数字です。

私は試した:

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'
4

2 に答える 2

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


1 {}
5 {}
于 2013-05-23T10:20:04.137 に答える
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
于 2013-05-23T10:26:08.000 に答える