【发布时间】:2019-02-26 17:42:01
【问题描述】:
我有一串字母作为输入。
输入:
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'] }
【问题讨论】:
-
为什么不使用
Counter?看起来是最好的工具。您可以使用字典理解来做到这一点,但结果是您将迭代字符串 五 次,使其效率降低。 -
stackoverflow.com/questions/12833512/… 查看第一个和第二个答案。
-
stackoverflow.com/questions/12833512/… 查看第一个和第二个答案。
-
@Gozzah:我认为链接的问题解决了一个不同的问题:这里我们感兴趣的是字符串中元音的 number 个,而不是列表中的字符串 (!)以元音开头。是的,有一些重叠,但两者在严格意义上是“不同”的问题。
标签: python dictionary-comprehension