我知道有很多关于此的问题,但我正在尝试按命中率列对下面的字典进行排序。

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']))

10-08 08:54