【问题标题】:I want to check for a specific element in a sublist and remove repeated sublists with the same element in python我想检查子列表中的特定元素并删除python中具有相同元素的重复子列表
【发布时间】: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


    【解决方案1】:

    一种快速而肮脏的方法是使用通用的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 不可散列)。

    【讨论】:

    • 效果很好,谢谢。我实际上并不需要代码高效,所以没关系:D
    【解决方案2】:

    没有 lambda 的答案。

    nmbrs = [n for n, city in lst] 
    
    lst2 = [x for i, x in enumerate(lst) if x[0] not in nmbrs[:i]]
    

    【讨论】:

    • 感谢您的帮助。
    猜你喜欢
    • 2018-05-29
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2018-02-18
    • 2021-09-25
    相关资源
    最近更新 更多