删除重复项(不使用set)

2024-05-21 03:49:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据如下:

let = ['a', 'b', 'a', 'c', 'a']

如何删除重复项?我希望我的输出是这样的:

['b', 'c']

当我使用set函数时,我得到:

set(['a', 'c', 'b'])

这不是我想要的。你知道吗


Tags: 数据函数letset
3条回答

一种选择是(根据Ritesh Kumar的答案here

let = ['a', 'b', 'a', 'c', 'a']
onlySingles = [x for x in let if let.count(x) < 2]

这给了

>>> onlySingles
['b', 'c']

试试这个

>>> let
['a', 'b', 'a', 'c', 'a']
>>> dict.fromkeys(let).keys()
['a', 'c', 'b']
>>> 

对输入进行排序,然后删除重复项变得很简单:

data = ['a', 'b', 'a', 'c', 'a']

def uniq(data):
  last = None
  result = []
  for item in data:
    if item != last:
      result.append(item)
      last = item
  return result

print uniq(sorted(data))
# prints ['a', 'b', 'c']

这基本上就是shell的cat data | sort | uniq习惯用法。 成本为O(N*logn),与基于树的集合相同。你知道吗

相关问题 更多 >