【发布时间】:2013-03-25 05:30:09
【问题描述】:
我有一个列表,其中包含几乎重复的元素,但标识该元素的数字除外。我想删除所有重复项,同时保留包含重复项的第一个元素的编号。
比如我想把l换成lnew:
l = ['iter1apple','iter2banana','iter3carrot','iter4apple','iter5orange','iter6banana','iter7mango']
lnew = ['iter1apple','iter2banana','iter3carrot','iter5orange','iter7mango']
我猜这与从列表元素的其余部分拆分数字、将列表转换为 set 并将 defaultdict 与拆分中的元素一起使用有关,但我不知道如何。
任何建议将不胜感激。
【问题讨论】:
-
那么您是如何决定删除
iter4apple和iter6banana的?一般的解决方案类似于lnew = [elem for elem in l if elem not in discardable],其中discardable是您要删除的一组。 -
@hughdbrown:
discardable未预定义。我正在尝试根据元素位置确定什么构成可丢弃,以及它是否是具有较低iter数字的元素的副本。