【发布时间】:2017-03-11 21:06:48
【问题描述】:
我有这个
lst = [['100','LA'],['101','NY'],['100','NC']]
lst2 = []
我需要检查是否有任何 100,101 等重复并删除重复的数字。所以第二个列表看起来像这样
lst2=[['100','LA'],['101','NY']]
因为 100 已经在第二个列表中添加了一次
【问题讨论】:
标签: python list python-3.x unique
我有这个
lst = [['100','LA'],['101','NY'],['100','NC']]
lst2 = []
我需要检查是否有任何 100,101 等重复并删除重复的数字。所以第二个列表看起来像这样
lst2=[['100','LA'],['101','NY']]
因为 100 已经在第二个列表中添加了一次
【问题讨论】:
标签: python list python-3.x unique
一种快速而肮脏的方法是使用通用的uniqueness过滤器:
def uniqueness(iterable,key=lambda x:x):
seen = set()
for item in iterable:
fitem = key(item)
if fitem not in seen:
yield item
seen.add(fitem)
然后你可以像这样使用它:
list2 = list(uniqueness(lst,key=lambda x:x[0]))
如果您不指定,过滤器将假定整个元素(但这里会失败,因为list 不可散列)。
【讨论】:
没有 lambda 的答案。
nmbrs = [n for n, city in lst]
lst2 = [x for i, x in enumerate(lst) if x[0] not in nmbrs[:i]]
【讨论】: