大家好,我有一本看起来像这样的字典:
[[['Test', 0,1],['Test2', 0,4],['Test3', 0,5],['Test4', 0,2],['Test5', 0,6],...]]
如何获得前两名(例如)?
预期结果:
[['Test3', 0,5],['Test5',0,6]]
答案 0 :(得分:2)
test = [[['Test', 0,1],['Test2', 0,4],['Test3', 0,5],['Test4', 0,2],['Test5', 0,6]]]
result = sorted(test[0], key=lambda x: x[2])[-2:]
print(result)
输出:
[['Test3', 0, 5], ['Test5', 0, 6]]
这样的东西?
(我假设你实际上是指['Test', 0, 1]
是一个包含3个元素的列表,这些元素将被第三个元素排序而不是第二个元素列表,第二个元素是float,在这种情况下它应该是['Test', 0.1]
你可以看看@ jonrsharpe的答案。我还假设输出顺序(从最低到最高)是相关的。)
答案 1 :(得分:2)
按第三个值排序:
>>> sorted(l[0], key=lambda x: x[2])[-2:]
[['Test3', 0, 5], ['Test5', 0, 6]]
答案 2 :(得分:1)
那是不字典,它是一个包含另一个包含列表的列表的列表([]
)。每个子子列表包含三个元素:
['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
。