按子列表元素匹配过滤列表

时间:2018-08-08 00:32:12

标签: python

我有以下双重嵌套的列表:

records = [[['Jack', 'male', 1],['Jack', 'male', 2],['Jack', 'male', 3]],[['Sally', 'female', 1],['Sally', 'female', 2],['Sally', 'female', 3]]]

我想根据最内层列表的第二个元素(通过索引)等于1的位置来过滤此列表。结果应如下所示:

records
[[['Jack', 'male', 1]],[['Sally', 'female', 1]]]

我认为可能需要某种形式的带条件的嵌套列表理解,但我无法弄清楚。

1 个答案:

答案 0 :(得分:2)

您可以使用嵌套列表理解:

records = [[['Jack', 'male', 1],['Jack', 'male', 2],['Jack', 'male', 3]],[['Sally', 'female', 1],['Sally', 'female', 2],['Sally', 'female', 3]]]
final_records = [[i for i in b if i[-1] == 1] for b in records]

输出:

[[['Jack', 'male', 1]], [['Sally', 'female', 1]]]