给一个列表去除重复数据的最原始方法
啥也不说,先看代码
items = [6, 1, 4, 5, 4, 3, 8, 6]
new_items = []
for item in items:
if item not in new_items:
new_items.append(item)
new_items:
[6, 1, 4, 5, 3, 8]
这应该是给一个列表去除重复还保留顺序的最兼容的办法了,为啥叫最兼容,意思是绝大多数情况下你按这个写法去操作,无论列表里面是什么东西,它都能很好地帮你处理成功。
比如,列表里面不是简单的数字或字符,而是一个一个的字典(对象),这也是可以的。
items = [
{'age': 6},
{'age': 1},
{'age': 4},
{'age': 5},
{'age': 4},
{'age': 3},
{'age': 8},
{'age': 6}]
new_items = []
for item in items:
if item not in new_items:
new_items.append(item)
new_items:
[{'age': 6}, {'age': 1}, {'age': 4}, {'age': 5}, {'age': 3}, {'age': 8}]
而之前有种利用 OrderedDict 进行操作去重复并保留顺序的方法,则不适用于这种包含多个字典的情况。
为啥有时候会偏爱 OrderedDict 这种方法呢,因为:代码行数和思考方式,如果能有种方法可以快速帮你做到,自然是选快捷的。而且,在实际情况中,你可能需要在一个环节同时面对十几个字段的去重复操作,这时候能有一种内建的方法能支持你快速实现并让代码结构很流畅,是很辛福的事情。
当然,也可以把上面的办法独立写个函数,这样就可以到处调用了。
A_items = [
{'age': 6},
{'age': 1},
{'age': 4},
{'age': 5},
{'age': 4},
{'age': 3},
{'age': 8},
{'age': 6}]
B_items = [
{'quantity': 60},
{'quantity': 10},
{'quantity': 40},
{'quantity': 50},
{'quantity': 40},
{'quantity': 30},
{'quantity': 80},
{'quantity': 60}]
def select_distinct(items):
new_items = []
if not items:
# 对于提供的数据不是符合数据结构的情况,可以根据具体情况来判断并修改返回空list或者是提示报错
return new_items
for item in items:
if item not in new_items:
new_items.append(item)
return new_items
my_A_items = select_distinct(A_items)
my_B_items = select_distinct(B_items)
my_A_items:
[{'age': 6}, {'age': 1}, {'age': 4}, {'age': 5}, {'age': 3}, {'age': 8}]
my_B_items:
[{'quantity': 60},
{'quantity': 10},
{'quantity': 40},
{'quantity': 50},
{'quantity': 30},
{'quantity': 80}]
这样,你可能不止两个三个需要处理,有时候可能是十几个,这样代码结构上的流畅性就很可观了。