迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Python 中在字典中查找出现次数最多的值

作者:迹忆客 最近更新:2023/01/25 浏览次数:

Python 中要在字典中查找最频繁的值:

  1. 使用 dict.values() 方法获取字典值的视图。
  2. 使用 collections.Counter() 类创建一个计数器对象。
  3. 使用 most_common() 方法获取字典中出现次数最多的值。
from collections import Counter

my_dict = {
    'a': 1,
    'b': 1,
    'c': 1,
    'd': 2,
    'e': 2,
    'f': 3
}

counter = Counter(my_dict.values())

most_common_value = counter.most_common(1)[0]
print(most_common_value)  # 👉️ (1, 3)

print(most_common_value[0])  # 👉️ 1

most_common_values = counter.most_common(2)
print(most_common_values)  # 👉️ [(1, 3), (2, 2)]

如果我们需要不使用任何导入的解决方案,请向下滚动到下一个副标题。

dict.values 方法返回字典值的新视图。

from collections import Counter

my_dict = {
    'a': 1,
    'b': 1,
    'c': 1,
    'd': 2,
    'e': 2,
    'f': 3
}

# 👇️ dict_values([1, 1, 1, 2, 2, 3])
print(my_dict.values())

我们使用 collections.Counter 类来计算每个值的出现次数。

collections 模块中的 Counter 类是 dict 类的子类。

该类基本上是键数对的映射。

from collections import Counter

my_dict = {
    'a': 1,
    'b': 1,
    'c': 1,
    'd': 2,
    'e': 2,
    'f': 3
}

counter = Counter(my_dict.values())
print(counter)  # 👉️ Counter({1: 3, 2: 2, 3: 1})

Counter 对象实现了 most_common() 方法,该方法返回 N 个最常见元素的列表及其从最常见到最少的计数。

from collections import Counter

my_dict = {
    'a': 1,
    'b': 1,
    'c': 1,
    'd': 2,
    'e': 2,
    'f': 3
}

counter = Counter(my_dict.values())

most_common_value = counter.most_common(1)[0]
print(most_common_value)  # 👉️ (1, 3)

print(most_common_value[0])  # 👉️ 1

Python 索引是从零开始的,因此列表中的第一项的索引为 0,最后一项的索引为 -1 或 len(my_list) - 1

如果没有向 most_common 方法提供参数,它将列出所有元素计数。

该方法返回一个元组列表,其中第一个元素是列表项,第二个元素是出现的次数。

我们还可以使用此方法获取字典中最常见的 N 个值。

from collections import Counter

my_dict = {
    'a': 1,
    'b': 1,
    'c': 1,
    'd': 2,
    'e': 2,
    'f': 3
}

counter = Counter(my_dict.values())

most_common_values = counter.most_common(2)
print(most_common_values)  # 👉️ [(1, 3), (2, 2)]

我们将 2 作为参数传递给 most_common() 方法,因此它返回最常见的 2 个字典值。

或者,我们可以使用 max 函数。

使用 max() 查找字典中出现频率最高的值

要在字典中查找最频繁的值:

  1. 使用 max() 函数。
  2. 将键参数传递给函数。
  3. 使用 list.count() 方法计算每个值的出现次数。
  4. max() 函数将返回最常见的值。
my_dict = {
    'a': 1,
    'b': 1,
    'c': 1,
    'd': 2,
    'e': 2,
    'f': 3
}

values = list(my_dict.values())

most_common_value = max(set(values), key=values.count)
print(most_common_value)  # 👉️ 1

我们使用 dict.values() 方法来获取字典值的视图并将视图对象转换为列表。

max 函数返回可迭代对象中的最大项或两个或多个参数中最大的一个。

my_list = [15, 45, 30]

result = max(my_list)

print(result)  # 👉️ 45

max 函数也有一个可选的键参数。

key 参数指定一个单参数排序函数。

我们使用 set() 函数将列表转换为集合对象以删除任何重复项。

你可以想象:

  1. 集合中的每个元素都会调用 list.count() 函数。
  2. 该函数返回值在列表中出现的次数。
  3. max() 函数返回最常见的值。
my_dict = {
    'a': 1,
    'b': 1,
    'c': 1,
    'd': 2,
    'e': 2,
    'f': 3
}

values = list(my_dict.values())

most_common_value = max(set(values), key=values.count)
print(most_common_value)  # 👉️ 1

list.count() 方法接受一个值并返回所提供的值在列表中出现的次数。

my_dict = {
    'a': 1,
    'b': 1,
    'c': 1,
    'd': 2,
    'e': 2,
    'f': 3
}

values = list(my_dict.values())
print(values)  # 👉️ [1, 1, 1, 2, 2, 3]

print(values.count(1))  # 👉️ 3
print(values.count(2))  # 👉️ 2
print(values.count('abc'))  # 👉️ 0

选择哪种方法是个人喜好的问题。 我会使用 Counter 类,因为我发现 most_common 方法非常直观。

本站文章均为原创或翻译,转载请发邮件至 1244347461@qq.com 进行申请,未经许可,禁止转载。经作者同意之后,转载请以链接形式注明出处

本文地址:

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

近期修改

教程更新

热门标签

扫码一下
查看教程更方便