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

开启你的职业生涯

完成课程获得认证

开始学习
广告