python - 在一组列表中只保留唯一字段的最佳方法

时间:2014-10-10 12:16:16

标签: python performance list

考虑这组列表:

[
["2" , "a" , "yes" , "next year"], 
["2" , "b" , "yes" , "next year"], 
["2" , "c" , "yes" , "next year"], 
["2" , "a" , "yes" , "next 5 years"], 
["2" , "a" , "yes" , "next year"], 
["2" , "d" , "yes" , "next year"], 
]

我想获取这些列表并删除所有列表中相同的所有“单元格”: 所以对于上面提到的数据,结果应该是:

[
["a", "next year"], 
["b", "next year"], 
["c", "next year"], 
["a", "next 5  years"], 
["a", "next year"], 
["d", "next year"], 
]

删除了“2”和“是”的列,因为它们在所有行中都是相同的。

我正在寻找一种有效的方法,因为我处理的是一大堆物品。

另外我想保留每个列表的顺序(我不关心外部列表中列表的顺序),你可以假设没有2个相同的行。

1 个答案:

答案 0 :(得分:2)

如果len(set(i))>1这意味着所有条目都不相同,那么你可以使用它:

>>> map(list,zip(*[i for i in zip(*l) if len(set(i))>1]))
[['a', 'next year'], ['b', 'next year'], ['c', 'next year'], ['a', 'next 5 years'], ['a', 'next year'], ['d', 'next year']]