当前位置: 首页 > 编程笔记 >

从Python中的元组列表中找到前K个频繁元素

从焱
2023-03-14
本文向大家介绍从Python中的元组列表中找到前K个频繁元素,包括了从Python中的元组列表中找到前K个频繁元素的使用技巧和注意事项,需要的朋友参考一下

我们有一个元组列表。在其中,我们需要找到前k个频繁元素。如果k为3,则需要从列表中的元组中找到前三个元素。

使用defaultdict

我们使用defaultdict将元素放入字典容器中。然后仅找出满足前k个条件的元素。

示例

import collections
from operator import itemgetter
from itertools import chain
# Input list initialization
listA = [[('Mon', 126)], [('Tue', 768)],[('Wed', 512)], [('Thu', 13)],[('Fri', 341)]]
# set K
K = 3
#Given list
print("Given list:\n",listA)
print("Check value:\n",K)
# Using defaultdict
dict_ = collections.defaultdict(list)
new_list = list(chain.from_iterable(listA))
for elem in new_list:
   dict_[elem[0]].append(elem[1])
res = {k: sum(v) for k, v in dict_.items()}
# Using sorted
res = sorted(res.items(), key=itemgetter(1),
reverse=True)[0:K]
# Output
print("Top 3 elements are:\n", res)

输出结果

运行上面的代码给我们以下结果-

Given list:
[[('Mon', 126)], [('Tue', 768)], [('Wed', 512)], [('Thu', 13)], [('Fri', 341)]]
Check value:
3
Top 3 elements are:
[('Tue', 768), ('Wed', 512), ('Fri', 341)]

与排序和itergetter

在这种方法中,我们使用itemgetter函数,但是通过提及从0到K的范围,将其应用到已排序函数中。

示例

from operator import itemgetter
from itertools import chain
# Input list initialization
listA = [[('Mon', 126)], [('Tue', 768)],[('Wed', 512)], [('Thu', 13)],[('Fri', 341)]]
# set K
K = 3
#Given html" target="_blank">list
print("Given list:\n",listA)
print("Check value:\n",K)
# Using sorted
res = sorted(list(chain.from_iterable(listA)),
   key = itemgetter(1), reverse = True)[0:K]
# Output
print("Top 3 elements are:\n", res)

输出结果

运行上面的代码给我们以下结果-

Given list:
[[('Mon', 126)], [('Tue', 768)], [('Wed', 512)], [('Thu', 13)], [('Fri', 341)]]
Check value:
3
Top 3 elements are:
[('Tue', 768), ('Wed', 512), ('Fri', 341)]
 类似资料:
  • 本文向大家介绍从Python中的元组列表中找到包含给定元素的元组,包括了从Python中的元组列表中找到包含给定元素的元组的使用技巧和注意事项,需要的朋友参考一下 列表可以将元组作为其元素。在本文中,我们将学习如何识别包含特定搜索元素(字符串)的元组。 有条件 我们可以根据情况设计跟踪。之后,我们可以提及条件或条件组合。 示例 输出结果 运行上面的代码给我们以下结果- 带过滤器 我们将过滤器功能与

  • 问题内容: 我有一个〜10 ^ 6元组的列表,像这样: 我想在此列表中找到Y的最大值,但也想知道绑定到的X。 我该怎么做呢? 问题答案: 用途: 使用: 使用: 比较:

  • 我对C很在行,我正在尝试做一些黑客挑战,以此作为解决这个问题的方法 现在我正在努力解决愤怒的孩子们的问题:https://www.hackerrank.com/challenges/angry-children 基本上,它要求创建一个程序,给定一组N个整数,为该集合的K长度子集找到最小可能的“不公平”。不公平定义为K长度子集的最大值和最小值之间的差值。 我现在要做的是找到所有的K长度子集,计算它们

  • 问题内容: 我有一个清单“ a” 我需要找到一个特定数字的所有元组。说1 我怎么做? 问题答案: 如果只希望第一个数字匹配,则可以这样操作: 如果您仅搜索其中包含1的元组:

  • 问题内容: 我有一个包含字符串的元组列表,例如: 现在,我希望将一个元组中的每个字符串连接起来,以创建一个用空格分隔的字符串列表。我使用以下方法: 工作正常。 但是,我有超过一百万个元组的列表。所以我的问题是,这种方法是否足够有效,或者有更好的方法呢?谢谢。 问题答案: 对于大量数据,您应该考虑是否 需要 将所有数据都保留在列表中。如果您一次处理每个字符串,则可以创建一个生成器,该生成器将产生每个

  • 问题内容: 我有一个小整数列表,说: 我希望收集顺序对并返回一个包含从这些对创建的元组的新列表,即: 我知道必须有一种非常简单的方法来执行此操作,但不能完全解决。 谢谢 问题答案: 好吧,有一种非常简单但有些脆弱的方法,将其自身切片后再压缩。 如果您不知道,最后一个slice参数是“ step”。因此,我们从零(1、3、5)开始选择列表中的第二个项目。然后,我们执行相同的操作,但是从一个(2,4,