Python - 從其他列表中統計元素頻率
元素頻率是指在兩個不同的列表中計算元素出現次數。一個列表定義唯一元素,另一個列表定義相對於第一個列表的相同元素的重複次數。然後,使用字典中的某些條件和操作,將第一個列表的每個元素表示為鍵,而值對將表示第二個列表中鍵元素的總重複次數。在 Python 中,可以使用一些內建函式,例如 Counter()、count()、defaultdict() 和 unique() 來解決從其他列表中統計元素頻率的問題。
讓我們來看一個例子。
給定兩個列表:
lst_1 = [1, 2, 3, 4]
lst_2 = [1, 1, 2, 1, 2, 2, 2, 3, 4, 4, 4, 4, 4]
最終結果為 {1: 3, 2: 4, 3: 1, 4: 5}
語法
以下語法在示例中使用
Counter()
內建方法 Counter() 是字典的一個子類,它跟蹤給定列表中相同項的數量。
count()
內建方法 count() 接受單個引數作為輸入,返回特定列表中存在的項數。
defaultdict()
defaultdict() 是 Python 中的一個內建函式,它會自動生成鍵值對,其中包含預設值。此函式有助於處理字典中缺失的鍵。
unique()
unique() 是 Python 中的一個內建函式,它返回唯一元素作為排序陣列。
使用 Counter()
在下面的示例中,我們將從提及庫集合和匯入名為 Counter 的模組開始程式,該模組將用於計算元素的頻率。然後建立兩個列表以分別儲存在變數 l1 和 l2 中。接下來,使用內建函式 Counter(),它接受第二個列表作為引數來計算鍵的重複次數並將其儲存在變數 cnt 中。然後初始化變數 res - 使用變數 i 的字典推導式設定為鍵,並遍歷列表 l1 以獲取相對於 l2 的元素的總計數匹配數,並將其儲存在變數 res 中。最後,我們使用變數 res 列印結果。
示例
from collections import Counter
# create the list
l1 = [40, 60, 80, 90]
l2 = [40, 60, 60, 5, 80, 10, 40, 90, 80, 10, 1]
cnt = Counter(l2)
res = {i: cnt[i] for i in l1}
print("The resulting frequency of key elements:\n", res)
輸出
The resulting frequency of key elements:
{40: 2, 60: 2, 80: 2, 90: 1}
使用迴圈和字典
在下面的示例中,程式從建立兩個不同的列表開始。然後使用空字典來儲存程式的最終輸出。接下來,使用 for 迴圈遍歷第一個列表,並將條件設定為第一個元素,該元素透過使用內建函式 count() 計數元素來等效於第二個列表。最後,列印結果。
示例
l1 = [40, 60, 80, 90]
l2 = [40, 60, 60, 5, 80, 10, 40, 90, 80, 10, 1]
# empty dictionary to store the final output
res = {}
for i in l1:
res[i] = l2.count(i)
print("The resulting frequency of key elements:\n", res)
輸出
The resulting frequency of key elements:
{40: 2, 60: 2, 80: 2, 90: 1}
使用 defaultdict() 函式
在下面的示例中,程式使用集合庫並匯入模組 defaultdict。然後建立兩個列表以分別儲存在變數中。然後使用內建函式 defaultdict(),該函式負責處理如果列表的第一個元素與列表的第二個元素不匹配則處理缺失的鍵,並將其儲存在變數 count 中。接下來,使用 for 迴圈遍歷列表的第二個元素,並使用 += 運算子遞增 1。然後使用字典將第一個元素列表設定為鍵,第二個元素設定為計數器。最後,顯示結果。
示例
from collections import defaultdict
# create the list
l1 = [40, 60, 80, 90]
l2 = [40, 60, 60, 5, 80, 10, 40, 90, 80, 10, 1]
# set the condition for the frequency of elements
count = defaultdict(int)
for i in l2:
count[i] += 1
# using dictionary
res = {i: count[i] for i in l1}
# display the result
print("The resulting frequency of key elements:\n", res)
輸出
The resulting frequency of key elements:
{40: 2, 60: 2, 80: 2, 90: 1}
使用 numpy 庫和 unique() 函式
在下面的示例中,程式使用必要的工具,例如 numpy 庫和兩個不同的列表來計算元素的頻率。接下來,使用內建函式 unique(),它返回唯一元素作為排序結果,並將相同的元素儲存在兩個不同的變數中。現在使用字典推導式來設定使用內建函式 where() 和 unique() 計算元素頻率的操作。最後,它將顯示結果。
示例
import numpy as np
# create the list
l1 = [40, 60, 80, 90]
l2 = [40, 60, 60, 5, 80, 10, 40, 90, 80, 10, 1]
# set the unique count of each element
unique_l1, counts_l1 = np.unique(l2, return_counts=True)
res = {i: counts_l1[np.where(unique_l1 == i)][0] for i in l1}
# display the output
print("The resulting frequency of key elements:\n", res)
輸出
The resulting frequency of key elements:
{40: 2, 60: 2, 80: 2, 90: 1}
結論
元素頻率是指出現在給定輸入列表或資料集中出現的元素個數。可以透過計算列表中出現的次數來確定頻率。可以使用各種內建函式,例如 unique()、where()、defaultdict() 等來解決特定條件和操作。這種型別的程式適用於文字挖掘、市場研究、質量控制等一些應用程式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP