Python 列表記錄中元素出現次數統計


本文將解釋如何使用Python統計給定記錄列表中元素的出現次數或重複次數。有時我們需要統計給定資料集中重複項的數量,因此本文將有助於解決這類問題。

理解問題

我們的問題是使用Python程式語言統計給定記錄列表中重複項的次數。基本上,我們要顯示給定記錄列表中相同或相同項的計數結果。讓我們用一個例子來理解這個問題

上述問題的邏輯

為了解決這個問題,我們使用兩種技術。第一種方法是使用使用者自定義函式,第二種方法是使用Python中collections模組的計數器方法。為了理解每種技術的完整邏輯,我們將深入研究演算法。

第一種方法 - 演算法

統計給定記錄列表中元素的出現次數,將透過遍歷每個記錄來完成,在迴圈內部,我們將檢查所需的值或項。然後,我們將維護一個字典來儲存迭代過程中不同項或值的計數。如果我們找到所需的值,我們將更新建立的字典中的計數。

  • 步驟1 − 定義名為occurrence_counter的函式,並將資料和鍵作為輸入傳遞到函式中。

  • 步驟2 − 然後初始化一個計數器字典,此字典最初為空,用於儲存函式的結果。

  • 步驟3 − 現在,在資料字典的值上啟動一個迴圈。在迴圈內部,我們將使用record.get()方法獲取每個鍵的值。

  • 步驟4 − 如果該值不在計數器字典中,我們將新增計數1。否則,將該值加1。

  • 步驟5 − 對資料記錄中的所有項重複上述步驟。

示例

# Define the function to counter the repeated items
def occurrence_counter(data, key):
   counter = {}
   for record in data:
      value = record.get(key)
      if value is not None:
         counter[value] = counter.get(value, 0) + 1
   return counter

#Initialize the list of records
data = [
   {'color_name': 'Cyan', 'code': '#00FFFF'},
   {'color_name': 'Red', 'code': '#FF0000'},
   {'color_name': 'Cyan', 'code': '#00FFFF'},
   {'color_name': 'Red', 'code': '#FF0000'},
   {'color_name': 'Blue', 'code': '#0000FF'},
]

# Define the key to count
key = 'color_name'
occurrences = occurrence_counter(data, key)
print("Occurrences counter for the given data: \n",occurrences)

輸出

Occurrences counter for the given data:
 {'Cyan': 2, 'Red': 2, 'Blue': 1}

第二種方法 - 演算法

在這種方法中,我們將使用collections模組的Counter類。藉助此類,我們將建立一個計數器物件,然後我們將更新給定記錄列表中的所需值。

  • 步驟1 − 第一步是從Python的collections模組匯入Counter類。

  • 步驟2 − 然後定義函式為occurrence_counter,並將資料和鍵作為兩個引數傳遞到函式中。

  • 步驟3 − 然後,我們將初始化空計數物件以儲存所需的結果。

  • 步驟4 − 在此步驟中將啟動一個迴圈,逐個遍歷資料的屬性。

  • 步驟5 − 然後,我們將從資料記錄中提取所需的值。並相應地更新計數物件。

示例

# Import the Counter class
from collections import Counter
# Define the function to count the occurrences
def occurrence_counter(data, key):
   counts = Counter()
   for record in data:
      value = record.get(key)
      if value is not None:
         counts[value] += 1
   return counts

#Initialize the list of data
data = [
   {'color_name': 'Cyan', 'code': '#00FFFF'},
   {'color_name': 'Blue', 'code': '#0000FF'},
   {'color_name': 'Cyan', 'code': '#00FFFF'},
   {'color_name': 'Red', 'code': '#FF0000'},
   {'color_name': 'Blue', 'code': '#0000FF'},
]

# Define the key for which we have to make count
key = 'color_name'

# Call the function
occurrences = occurrence_counter(data, key)
print(occurrences)

輸出

Counter({'Cyan': 2, 'Blue': 2, 'Red': 1})

複雜度

完成上述兩個程式碼的執行所需的時間為O(n),其中n是給定輸入記錄列表的大小。因為我們在兩個程式碼中都使用迴圈遍歷給定記錄一次來查詢所需的鍵。兩種技術的空間複雜度均為O(m),其中m是記錄中唯一元素的大小。因為我們只儲存唯一元素來獲取計數。

結論

在本文中,我們成功地找到了給定記錄列表中重複屬性的出現次數。我們在本文中使用了兩種技術,並理解了每種方法背後的邏輯。這兩種技術都高效有效地查找出現計數器。

更新於:2023年10月18日

瀏覽量:101

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.