【问题标题】:How do you return 2 or more duplicates in a multidimensional list如何在多维列表中返回 2 个或更多重复项
【发布时间】:2020-10-16 12:32:19
【问题描述】:

我有一个多维列表,我想返回 2 个或更多重复项,但我不知道要使用什么代码。

例如这是我的清单

A=[[a,b],[b,c],[g,i],[a,c],[a,b],[a,b],[b,c]]

我想在我的列表中返回 2 个或更多重复项。所以会是这样的

b=[[a,b],[b,c]]

【问题讨论】:

  • 您能分享一下您的尝试吗?您是在多维列表中寻找重复列表,还是在整个集合中寻找重复值?
  • 例如这里是我的列表 A=[[a,b],[b,c],[g,i],[a,c],[a,b],[a, b],[b,c]]。我想在我的列表中返回 2 个或更多重复项。所以它会是这样的 b=[[a,b],[b,c]]

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


【解决方案1】:

您可以使用 Python 的内置函数 count() 来确定列表中某个项目的出现次数。要实现您的目标,您可以执行以下操作:

a = [["a", "b"], ["b", "c"], ["g", "i"], ["a", "c"], ["a", "b"], ["a", "b"],["b", "c"]]

dupes = list()
for item in a:
    if a.count(item) > 1 and item not in dupes:
        dupes.append(item)

print(dupes)
>>> [['a', 'b'], ['b', 'c']]

【讨论】:

    【解决方案2】:

    您可以使用Counter,将列表转换为元组,以便对其进行散列(然后计数),然后根据计数为 2 或更多来过滤计数器:

    from collections import Counter
    
    A = [["a", "b"], ["b", "c"], ["g", "i"], ["a", "c"], ["a", "b"], ["a", "b"],["b", "c"]]
    
    counts = Counter(map(tuple, A))
    b = [list(t) for t, c in counts.items() if c > 1]
    print(b)
    

    输出:

    [['a', 'b'], ['b', 'c']]
    

    【讨论】:

    • 有没有办法获得最大重复数?
    • @outkast20 如果您指的是最常见的值及其计数,您可以使用counts.most_common(1)
    • 对不起。我可能不是偶然
    • 如何将我的列表放入 counts.most_common(1)
    • 我不确定你的意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 2015-03-22
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多