Python - 奇数频率字符


在 Python 中,从给定字符串中提取奇数频率的字符是文本处理和数据分析中非常常见的任务。在本文中,我们将学习在 Python 中提取字符串奇数频率字符的各种方法。

使用字典

当需要跟踪元素频率时,字典非常方便。

方法

为了获取奇数频率的元素,我们将遍历整个字符串,对于字符串中的每个字符,我们将增加字典中的字符计数。迭代结束时,我们将得到一个包含每个字符出现次数的字典,然后我们将显示具有奇数频率的字符。

解释

  • 使用 for 循环遍历字符串。

  • 对于每个字符,使用字符作为键更新字典中的计数。

  • 使用 items() 方法获取字典中的键值对,如果值为奇数,则将字符添加到结果列表中。

示例

st = "TutorialsPoint"

Occurrences = {}
result = []
   
# Populating dictionary with a count of each character
for char in st:
   Occurrences[char] = Occurrences.get(char, 0) + 1
# fetching characters with odd frequency
for char, count in Occurrences.items():
    if count % 2 != 0:
        result.append(char)
print(result)

输出

['T', 'u', 'r', 'a', 'l', 's', 'P', 'n']

使用 Counter

Python 的 collections 模块中的 Counter 类提供了一种简单的方法来计算迭代对象中元素的频率,包括字符串中的字符。我们可以使用这种方法来简化提取奇数频率字符的过程。

语法

Counter()

Counter(collection)
  • 集合:列表、元组、字符串等。

解释

  • 将字符串传递给 Counter()

  • Counter() 将返回一个字典对象,其中包含列表中每个字符的频率。

  • 遍历字典并将具有奇数频率的字符添加到结果列表中。

示例

from collections import Counter

Occurrences = Counter("TutorialsPoint")
result = []
for char, count in Occurrences.items():
    if count % 2 != 0:
        result.append(char)
   
print(result)

输出

['T', 'u', 'r', 'a', 'l', 's', 'P', 'n']

使用列表推导和 count() 方法

列表推导提供了一种基于现有列表或其他迭代对象创建列表的方法。我们可以将列表推导与 count 方法一起使用来计算字符串中每个字符的频率,并构造一个包含奇数频率字符的列表。

语法

count()

count(element)
  • 元素:我们要在迭代对象中计数的项。

  • count() 返回一个整数,即元素的计数。

解释

  • 使用列表推导遍历字符串

  • 使用 set() 方法获取字符串中唯一字符的列表。

  • 如果字符计数为奇数,则将其添加到列表中。

示例

st = "TutorialsPoint"
uniqueChars = set(st)
result = [char for char in uniqueChars if st.count(char) % 2 != 0]
print(result)

输出

['T', 'l', 'P', 'a', 'n', 's', 'r', 'u']

使用 For 循环

我们可以使用嵌套循环来查找每个字符的频率。对于每个字符,遍历整个列表并递增计数值,如果计数为奇数,则将其添加到结果列表中。

解释

  • 遍历列表中的每个元素

  • 对于每个元素,通过遍历列表来检查该元素的出现次数。

  • 如果计数为奇数,则将元素添加到结果列表中。

示例 4

st = "TutorialsPoint"

# getting distinct characters from string
uniqueChars = set(st)
result = []
for i in uniqueChars:
    count = 0
    for j in st:
        if(i==j):
            count= count+1
    if(count%2==1):
        result.append(i)
print(result)

输出

['T', 's', 'P', 'r', 'n', 'a', 'u', 'l']

结论

在本教程中,我们讨论了从字符串中检索奇数频率字符的多种方法。我们实现的最后一种方法效率不高,只能用于小型数据,而其他三种方法可以用于大型输入。

更新于:2023年8月9日

314 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告