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()函数
在以下示例中,程序使用了collection库并导入了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()等。这种类型的程序适用于文本挖掘、市场研究、质量控制等一些应用领域。