python删除列表中的重复元素并保持相对顺序不变

Posted Data+Science+Insight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python删除列表中的重复元素并保持相对顺序不变相关的知识,希望对你有一定的参考价值。

python删除列表中的重复元素并保持相对顺序不变

 

从列表中删除重复项以便所有元素都是唯一的同时保持原有相对顺序不变

对于列表我们可以使用如下方法:

l1 = [1,7,7,8,5,5,4] 
l2 = list(set(l1)) 
l2.sort(key=l1.index)
print (l2) 

那么如果我们需要去除冗余数据的数据结构是字典、文件那?


#如果序列上的值都是 hashable 类型,那么可以很简单的利用集合或者生成器来解决这个问题。

def dedupe(items):
    seen = set()
    for item in items:
        if item not in seen:
            yield item
            seen.add(item)

test_list = [10,10,1,200,200,9,0,9,1000,50,10,10]
# 想消除重复元素,通常可以简单的构造一个集合
# 但是set方法不能维护元素的顺序,生成的结果中的元素位置被打乱。
print(set(test_list))
list(dedupe(test_list))

#
{0, 1, 200, 9, 10, 1000,

以上是关于python删除列表中的重复元素并保持相对顺序不变的主要内容,如果未能解决你的问题,请参考以下文章

去除ArrayList中的重复元素并保持顺序

如何从 Python 列表中删除重复项并保持顺序? [复制]

Leetcode刷题Python26. 删除有序数组中的重复项

根据另一列删除一列中的重复行并保持其他列不变

算法题:奇数在前 偶数在后,相对顺序保持不变

消除列表中重复项的最佳方法,但保持先前的相对顺序 [重复]