python中字典的前n个条目

python中字典的前n个条目,python,Python,嗨,伙计们,我有一本字典,看起来像这样: [[['Test', 0,1],['Test2', 0,4],['Test3', 0,5],['Test4', 0,2],['Test5', 0,6],...]] 例如,我如何才能获得前两名 预期结果: [['Test3', 0,5],['Test5',0,6]] 输出: [['Test3', 0, 5], ['Test5', 0, 6]] 像这样的 我假设你的意思是['Test',0,1]是一个包含3个元素的列表,由第三个元素排序,而不是一个包含

嗨,伙计们,我有一本字典,看起来像这样:

[[['Test', 0,1],['Test2', 0,4],['Test3', 0,5],['Test4', 0,2],['Test5', 0,6],...]]
例如,我如何才能获得前两名

预期结果:

[['Test3', 0,5],['Test5',0,6]]
输出:

[['Test3', 0, 5], ['Test5', 0, 6]]
像这样的


我假设你的意思是['Test',0,1]是一个包含3个元素的列表,由第三个元素排序,而不是一个包含两个元素的列表,第二个元素是浮点,在这种情况下,它应该是['Test',0.1],你可以看看@jornsharpe的答案。我还假设输出顺序从低到高是相关的。

按第三个值排序:

>>> sorted(l[0], key=lambda x: x[2])[-2:]
[['Test3', 0, 5], ['Test5', 0, 6]]
这不是字典,它是一个列表[],包含另一个包含列表的列表。每个子列表包含三个元素:

['Test2', 0, 4]
#^0       ^1 ^2
注意Python不允许用户使用逗号作为小数点;我想你想要0.4

假设,对子列表进行排序并提取最高的两个子列表很容易:

from operator import itemgetter
output = sorted(lst[0], key=itemgetter(1), reverse=True)[:2]

如果我对逗号的理解有误,请将参数设置为itemgetter 2

一,。这不是一本字典。2.什么意义上的top?按值0,5,0,4等等。这是一个列表吗?@SiMon第二个值是什么,0?如果你想让它成为一个列表,lst.sortedreverse=True,key=lambda item:item[2][0:1]可能是一个好的开始。另见
from operator import itemgetter
output = sorted(lst[0], key=itemgetter(1), reverse=True)[:2]