在保留变量的同时删除Python列表中的近似重复元素

时间:2013-03-24 21:09:19

标签: python list

我有一个包含近似重复元素的列表,但标识该元素的数字除外。我想删除所有重复项,同时保留包含重复项的第一个元素的编号。

例如,我想将l替换为lnew

l = ['iter1apple','iter2banana','iter3carrot','iter4apple','iter5orange','iter6banana','iter7mango']

lnew = ['iter1apple','iter2banana','iter3carrot','iter5orange','iter7mango']

我猜这与从列表元素的其余部分拆分数字有关,将列表转换为设置并使用defaultdict与拆分中的元素,但我无法弄清楚如何。

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您想要丢弃以列表中已包含的一个元素结尾的项目。在这种情况下,您可以使用正则表达式和列表来跟踪已使用的元素:

import re

l = ['iter1apple', 'iter2banana', 'iter3carrot', 'iter4apple', 'iter5orange', 'iter6banana', 'iter7mango']
duplicates = []
lnew = []
for item in l:
    match = re.match("^iter\d+(\w+)$", item)
    if match and not match.group(1) in duplicates:
        duplicates.append(match.group(1))
        lnew.append(item)

# lnew = ['iter1apple','iter2banana','iter3carrot','iter5orange','iter7mango']