我试图理解 python 中的字典排序,但我被这个令人困惑的问题难住了(我确信这是愚蠢的,但我无法解码这个问题)。
所以我有这个嵌套字典:
some_dict={'10_key0': {'pass_fail': 1, 'scoring': 94}, '10_key1': {'pass_fail': 0, 'scoring': 38}}
Run Code Online (Sandbox Code Playgroud)
我现在尝试像这样排序:
>>> sorted(some_dict, key=some_dict.get('pass_fail'), reverse=True)
['10_key1', '10_key0']
Run Code Online (Sandbox Code Playgroud)
我不明白输出 - 我认为它应该是:
['10_key0', '10_key1']
Run Code Online (Sandbox Code Playgroud)
难道不是这样吗?我缺少什么?
你的key不在这儿了。some_dict.get('pass_fail')计算结果为None,因此您的调用本质上相当于,这与根本sorted(some_dict, key=None, reverse=True)不传递 a 相同。key您的意思是传递一个查看当前正在考虑的元素的函数:
key=lambda k:some_dict[k]["pass_fail"]
Run Code Online (Sandbox Code Playgroud)