我有以下带有元组列表的列表:
[[('Armin', 1.0), ('Doris', 0.2240092377397959)], [('Benjamin', 1.0), ('Doris', 0.3090169943749474)], [('Caroline', 1.0), ('Benjamin', 0.2612038749637414)], [('Doris', 1.0), ('Benjamin', 0.3090169943749474)], [('Ernst', 1.0), ('Benjamin', 0.28989794855663564)]]
这是列表中的元组列表。我想按每个列表中第二个元组的值对其进行排序。例如 - 我想得到orderedList的结果:
[[('Benjamin', 1.0), ('Doris', 0.3090169943749474)],[('Doris', 1.0), ('Benjamin', 0.3090169943749474)],[('Ernst', 1.0), ('Benjamin', 0.28989794855663564)],[('Caroline', 1.0), ('Benjamin', 0.2612038749637414)],[('Armin', 1.0), ('Doris', 0.2240092377397959)]]
我无法使用sorted和lambda来管理它。
你能告诉我怎么做吗?
答案 0 :(得分:1)
这应该这样做:
l = [[('Armin', 1.0), ('Doris', 0.2240092377397959)], [('Benjamin', 1.0), ('Doris', 0.3090169943749474)], [('Caroline', 1.0), ('Benjamin', 0.2612038749637414)], [('Doris', 1.0), ('Benjamin', 0.3090169943749474)], [('Ernst', 1.0), ('Benjamin', 0.28989794855663564)]]
sorted(l, key=lambda x: x[1][1], reverse=True)
<强>解释强>:
在sorted中传递key参数允许您通过指定的键对对象进行排序。在这种情况下,我们要排序的键是列表第二项中的第二个值。传递reverse=True
参数按降序对列表进行排序。
答案 1 :(得分:0)
我想你想要这个。按第二个值对每个子列表进行排序,然后按照子列表中第二个值的数量对顶级列表进行排序。
sorted([sorted(e, key=lambda x: x[-1], reverse=True) for e in x],
key=lambda x: x[-1][-1], reverse=True)
# returns:
[[('Benjamin', 1.0), ('Doris', 0.3090169943749474)],
[('Doris', 1.0), ('Benjamin', 0.3090169943749474)],
[('Ernst', 1.0), ('Benjamin', 0.28989794855663564)],
[('Caroline', 1.0), ('Benjamin', 0.2612038749637414)],
[('Armin', 1.0), ('Doris', 0.2240092377397959)]]
答案 2 :(得分:0)
你可以试试这个:
s= [[('Armin', 1.0), ('Doris', 0.2240092377397959)], [('Benjamin', 1.0), ('Doris', 0.3090169943749474)], [('Caroline', 1.0), ('Benjamin', 0.2612038749637414)], [('Doris', 1.0), ('Benjamin', 0.3090169943749474)], [('Ernst', 1.0), ('Benjamin', 0.28989794855663564)]]
final_s = [[(a, b) for a, b in zip([c for c, d in i], [d for c, d in i][::-1])][::-1] for i in sorted(s, key=lambda x:x[-1][-1])[::-1]]
输出:
[[('Benjamin', 1.0), ('Doris', 0.3090169943749474)], [('Doris', 1.0), ('Benjamin', 0.3090169943749474)], [('Benjamin', 1.0), ('Ernst', 0.28989794855663564)], [('Benjamin', 1.0), ('Caroline', 0.2612038749637414)], [('Doris', 1.0), ('Armin', 0.2240092377397959)]]