【问题标题】:How do you remove duplicates values in 2d如何删除 2d 中的重复值
【发布时间】:2020-02-06 08:48:09
【问题描述】:

我有一个二维列表,我想删除重复项,但仍通过使用列表理解来保持列表中的顺序。例如下面是我的列表

Df = [[2,4,6,6,7],[3,4,5,7,9,3,5],[2,4,6,8]]

我希望我的结果是

Df2 = [[2,4,6,7],[3,4,5,7,9,],[2,4,6,8]]

【问题讨论】:

    标签: python python-3.x list multidimensional-array


    【解决方案1】:

    如果顺序不重要,应该这样做

    Df2 = [list(set(item)) for item in Df]
    

    如果顺序很重要,试试下面的代码

    from collections import OrderedDict
    Df2 = [list(OrderedDict.fromkeys(item)) for item in Df]
    

    输入

    Df = [[2,4,6,6,7],[3,4,5,7,9,3,5],[2,4,6,8]]

    输出1

    Df2 = [[2, 4, 6, 7], [3, 4, 5, 7, 9], [8, 2, 4, 6]]

    输出2

    Df2 =[[2, 4, 6, 7], [3, 4, 5, 7, 9], [2, 4, 6, 8]]

    【讨论】:

    • 这可行,但如果列表中没有重复项,则顺序不正确。我更新了描述中的问题
    • 虽然这个想法很好,但您在这里依赖于某些 CPython 版本的实现细节。 set 仍然是 specified as unordered。您不能确保这将在任何和所有实现中起作用。您需要一个 OrderedSet 或使用 OrderedDict 来帮助自己确保它始终有效。
    • @blubberdiblub 感谢您的提示。代码更新以保持顺序。
    猜你喜欢
    • 2019-05-20
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 2013-04-10
    • 2019-02-23
    相关资源
    最近更新 更多