在 Python 中查詢二維列表中最常見的元素


二維列表以列表作為其元素。換句話說,它是一個列表的列表。在本文中,我們需要找到列表內部所有列表中最常見的元素。

使用 max 和 count

我們設計了一個帶 in 條件的迴圈來檢查給定子列表中是否存在某個元素。然後,我們應用 max 函式以及 count 函式來獲取頻率最高的元素。

示例

 線上演示

def highest_freq(lst):
   SimpleList = [el for sublist in lst for el in sublist]
   return max( SimpleList, key= SimpleList.count)
# Given list
listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]]
print("Given List:\n",listA)
print("Element with highest frequency:\n",highest_freq(listA))

輸出

執行以上程式碼,得到以下結果:

Given List:
[[45, 20, 11], [20, 17, 45], [20, 13, 9]]
Element with highest frequency:
20

使用 chain

在這裡,我們採用了與上面類似的方法。但是,我們使用了 itertools 模組中的 chain 函式。

示例

 線上演示

from itertools import chain
def highest_freq(lst):
   SimpleList = list(chain.from_iterable(lst))
   return max( SimpleList, key= SimpleList.count)
# Given list
listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]]
print("Given List:\n",listA)
print("Element with highest frequency:\n",highest_freq(listA))

輸出

執行以上程式碼,得到以下結果:

Given List:
[[45, 20, 11], [20, 17, 45], [20, 13, 9]]
Element with highest frequency:
20

使用 Counter 和 chain

在這種方法中,來自 collections 的 counter 函式會保留使用 itertools 中的 chain 函式檢索到的元素的計數。

示例

 線上演示

from itertools import chain
from collections import Counter
def highest_freq(lst):
   SimpleList = chain.from_iterable(lst)
   return Counter(SimpleList).most_common(1)[0][0]
# Given list
listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]]
print("Given List:\n",listA)
print("Element with highest frequency:\n",highest_freq(listA))

輸出

執行以上程式碼,得到以下結果:

Given List:
[[45, 20, 11], [20, 17, 45], [20, 13, 9]]
Element with highest frequency:
20

更新於: 2020年6月4日

554 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告