python列表中最常见的子列表

时间:2019-03-21 16:54:17

标签: python algorithm list

我有这个列表:

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()来做,但是没有成功。

谢谢

1 个答案:

答案 0 :(得分:6)

您快到了!

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