【问题标题】:Most common sublist in python list [duplicate]python列表中最常见的子列表[重复]
【发布时间】:2019-03-21 16:54:17
【问题描述】:

我有这个清单:

big_list = [['UPPER', 'UPPER', 'UPPER', 'LEI', 'DATE', 'ISIN', 'DEVISE', 'QUANTITY', 'QUANTITY', 'PRICE', 'MIC'], 
            ['UPPER', 'UPPER', 'UPPER', 'LEI', 'DATE', 'ISIN', 'DEVISE', 'QUANTITY', 'QUANTITY', 'PRICE', 'MIC'], 
            ['UPPER', 'UPPER', 'UPPER', 'LEI', 'DATE', 'ISIN', 'DEVISE', 'QUANTITY', 'QUANTITY', 'PRICE', 'MIC'], 
            ['DEVISE'], 
            ['DEVISE'], 
            ['BORING', 'QUANTITY', 'QUANTITY'], 
            ['BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'UPPER', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING'], 
            ['BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'DEVISE', 'BORING', 'BORING', 'BORING', 'DEVISE', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING'], 
            ['BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING', 'BORING']]

我想在我的big_list 中找出最常见的列表。 在这个例子中,这个函数会给我: ['UPPER', 'UPPER', 'UPPER', 'LEI', 'DATE', 'ISIN', 'DEVISE', 'QUANTITY', 'QUANTITY', 'PRICE', 'MIC'] 如果可以的话,在 big_list 中出现 3 次。

什么是最短和最有效的方法?

我尝试使用collections.Counter() 进行操作,但没有成功。

谢谢

【问题讨论】:

  • Counter(d for d in big_list).most_common(1)[0] -> TypeError: unhashable type: 'list'
  • @zakk8889 这是编辑原始问题的好信息,而不仅仅是评论
  • 哦,是的,但我只能找到“合并”其间子列表的答案,例如:codegolf.stackexchange.com/questions/133159/…

标签: python algorithm list


【解决方案1】:

你快到了!

Counter(tuple(d) for d in big_list).most_common(1)[0] 
(('UPPER', 'UPPER', 'UPPER', 'LEI', 'DATE', 'ISIN', 'DEVISE', 'QUANTITY', 'QUANTITY', 'PRICE', 'MIC'), 3)

您需要将列表设为可散列类型,在本例中为 tuple

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    相关资源
    最近更新 更多