美文网首页
list包含dict去重

list包含dict去重

作者: 你猜_19ca | 来源:发表于2019-04-24 15:47 被阅读0次

    有如下列表

    li = [{'a': 1}, {'b': 2}, {'a': 1}]
    

    如果采用set的去重方式,则会报错

    li = list(set(li))
    >>>TypeError: unhashable type: 'dict'
    

    可以用下面的方法:
    第一种:reduce

    def deleteDuplicate(li):
        func = lambda x, y: x if y in x else x + [y]
        li = reduce(func, [[], ] + li)
        return li
    >>> deleteDuplicate(li)
    >>>[{'a': 1}, {'b': 2}]
    

    第二种:

    def deleteDuplicate(li):
        temp_list = list(set([str(i) for i in li]))
        li=[eval(i) for i in temp_list]
        return li
    
    >>> deleteDuplicate(li)
    >>>[{'a': 1}, {'b': 2}]
    

    第三种:

    >>>li = [dict(t) for t in set([tuple(d.items()) for d in li])]
    >>>li
    >>>[{'a': 1}, {'b': 2}]
    

    建议使用第三种,因为速度更加快,经过测试相同的数据,第三种方法速度比第一种的10倍。

    出处: https://www.jianshu.com/p/980e44949a84

    相关文章

      网友评论

          本文标题:list包含dict去重

          本文链接:https://www.haomeiwen.com/subject/bpmggqtx.html