代码语言:javascript复制本节的内容是怎样在一个序列上面保持元素顺序的同时消除重复的值? 如果我们想消除一个队列里的重复元素,那么可以利用集合的特性来实现,比如以下代码,但是这样的代价是重复的元素去掉了。但是列表里的元素不是按顺序排列了。 请注意set会自动排序,我这里期望的顺序是3,1,2,23 按照元素的先来后到展示。
a = [3,1,1,2,3,1,1,23]
print(set(a)) #{1, 2, 3, 23}
如果要是保持顺序且消除重复元素,我们可以使用以下代码来实现:
代码语言:javascript复制def unq(items):
list1 = list()
for item in items:
if item not in list1:
list1.append(item)
else:continue
return list1
print(unq(a)) #[3, 1, 2, 23]
新的场景来了,比如我的是一个字典列表,且里面有重复的字典,那么用上面的代码也是可以胜任的
代码语言:javascript复制def unq(items):
list1 = list()
for item in items:
if item not in list1:
list1.append(item)
else:continue
return list1
a = [{'a': 1, 'b': 2}, {'a': 1, 'b': 3}, {'a': 1, 'b': 2}, {'a': 2, 'b': 4}]
print(unq(a)) #[{'a': 1, 'b': 2}, {'a': 1, 'b': 3}, {'a': 2, 'b': 4}]
如果你想在排列去重的时候,按照顺序排列,那么可以利用set的特性,我们将上面代码的list换成set即可。