gpt4 book ai didi

python - 查找字符串中元音的数量

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:50 24 4
gpt4 key购买 nike

我有一串字母作为输入。
输入:

my_str = 'soumendra_in_stackoverflow'

我想要如下输出。所有的元音都应该连同它们在字典中的相应计数一起打印。
需要输出:

{'a': 2, 'e': 2, 'i': 1, 'o': 3, 'u': 1}

为此我编写了以下程序:

ans_dict = {}
for letter in my_str:
if letter in ['a', 'e', 'i', 'o', 'u']:
ans_dict[letter] = ans_dict.get(letter, 0) + 1
print(ans_dict)

它有效。但是,如何在不使用 collections.Counter 的情况下在一行中编写相同的逻辑(可能使用字典理解)?
我试过了,但失败了。

{x: + 1 for x in a if x in ['a', 'e', 'i', 'o', 'u'] }

最佳答案

您可以使用 str.count 并因此编写字典推导式:

result = { v: my_str.count(v) for v in "aeiou" }

但这会导致枚举 my_str 五次 次。然而,就像 @DSM 所说的那样,.count(..) 通常工作得相当快(我猜它是在解释器级别实现的,因此它不必“迭代”集合)。

我个人认为 Counter 会更好,因为

  1. 它是专门为计数而设计的,而且它将数据包装到一个接口(interface)中,该接口(interface)将强制执行约束(除非 Counter 中存在错误,计数肯定是正确的,而定制的算法仍然可能有一个“愚蠢”的错误,是的,这是不太可能的,但最好避免这种情况);和
  2. 它提供了一个很好的界面来用这些计数做各种事情(例如 counter1 & counter2 将构造一个新的 Counter最小值 每个元素的计数)。

关于python - 查找字符串中元音的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52458532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com