У меня есть строка букв в качестве ввода.
ввод:
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
? Похоже, лучший инструмент для этого. Вы можете сделать это с пониманием словаря, но в результате вы будете перебирать строку пять раз, делая ее менее эффективной. - person Willem Van Onsem   schedule 22.09.2018in
, это будет быстрее. - person N Chauhan   schedule 22.09.2018