【发布时间】:2016-12-14 12:17:11
【问题描述】:
示例:
list = [['1', '13/12/2016', [42, 52]], ['2', '12/12/2016', [36, 46]], ['4', '10/12/2016', [13, 23]], ['4', '10/12/2016', [42, 52]], ['5', '08/12/2016', [42, 52]], ['6', '07/12/2016', [32, 42]], ['7', '12/12/2016', [42, 52]], ['8', '06/12/2016', [42, 52]], ['10', '12/12/2016', [45, 55]], ['11', '08/12/2016', [42, 52]]]
我想检查每个子列表的所有第二个元素是否重复。
如果第二个元素在另一个子列表中重复,我想保留整个子列表
预期结果:
endlist = [['2', '12/12/2016', [36, 46]], ['4', '10/12/2016', [13, 23]], ['4', '10/12/2016', [42, 52]], ['5', '08/12/2016', [42, 52]], ['7', '12/12/2016', [42, 52]], ['10', '12/12/2016', [45, 55]], ['11', '08/12/2016', [42, 52]]]
(08/12/2016 | 10/12/2016 | 12/12/2016 是双打)
我知道如何使用平面列表 ([x for x in l if l.count(x) > 1]) 保留双打,但是如何在带有子列表的列表中做到这一点?
【问题讨论】:
-
你为什么扔掉第一个元素?
['1', '13/12/2016', [42, 52]]的第二个位置有一个len = 2列表 -
为什么不直接做 '([x[1] for x in l if l.count(x[1]) > 1])' ?
-
@GáborErdős,我不明白你的问题
标签: python list python-3.x