我知道有很多关于此的问题,但我正在尝试按命中率列对下面的字典进行排序。
data = {
'a': {'get': 1, 'hitrate': 1, 'set': 1},
'b': {'get': 4, 'hitrate': 20, 'set': 5},
'c': {'get': 3, 'hitrate': 4, 'set': 3}
}
我尝试了很多东西,最有希望的是下面的方法似乎出错了。
s = sorted(data, key=lambda x: int(x['hitrate']))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
TypeError: string indices must be integers, not str
我可以得到一些帮助吗?
谢谢!
最佳答案
迭代 dict 会产生键,因此您需要再次在 dict 中查找 x
:
sorted(data, key=lambda x: int(data[x]['hitrate']))
如果您也想要这些值,请对项目进行排序:
sorted(data.items(), key=lambda item: int(item[1]['hitrate']))