在Python列表列表中的每个位置查找给定字符的频率

让我们考虑一个场景,其中有一个由列表组成的列表。我们有兴趣在内部列表的不同位置查找一个字符的出现频率。下面的示例将阐明要求。

考虑下面给出的列表列表。

listA = [['a', 'a', 'b'],
['a', 'c', 'b'],
['c', 'a', 'b'],
['c', 'a', 'a']]

在abobe列表中,我们具有包含3个元素的列表。如果我认为第一个内部列表山雀在位置0,1,2处有a,a,b。同样,对于第三个列表,它是0,1,2处的c,a,b。考虑所有内部列表,我们可以说位置0的频率a为2,位置1的频率a为3,位置2的频率a为1。

下面的程序旨在为列表中的任何元素找到此类值。

大熊猫

通过创建数据框,pandas库被广泛用于数据操作。因此,我们创建一个数据帧并使用where子句遍历该数据帧,以查找值'a'是否出现在数据帧的每个位置中。

示例

import pandas as pd

# Given list of lists
listA = [['a', 'a', 'b'],
['a', 'c', 'b'],
['c', 'a', 'b'],
['c', 'a', 'a']]

# using pandas
df = pd.DataFrame(listA)
res = df.where(df == 'a', 0).where(df != 'a', 1)

# Result
print("Occurrence of 'a' at 0,1 and 2 position\n", res.sum())

输出结果

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

Occurrence of 'a' at 0,1 and 2 position
0 2.0
1 3.0
2 1.0

带拉链

我们可以使用for循环遍历列表子列表中的每个位置,并将zip函数应用于整个列表列表。

示例

# Given list of lists
listA = [['a', 'a', 'b'],
['a', 'c', 'b'],
['c', 'a', 'b'],
['c', 'a', 'a']]

res = [elem.count('a') for elem in zip(*listA)]
# Result
print("Occurrence of 'a' at 0,1 and 2 position\n", res)

输出结果

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

Occurrence of 'a' at 0,1 and 2 position
[2, 3, 1]