Переписать на словарь - PullRequest
6 голосов
/ 12 июня 2019

Я хочу посчитать вхождение всех букв в слове, используя словарь. До сих пор я пытался добавить, чтобы продиктовать цикл.

Интересно, можно ли использовать словарные выражения?

word = "aabcd"
occurrence = {}
for l in word.lower():
    if l in occurrence:
        occurrence[l] += 1
    else:
        occurrence[l] = 1

Ответы [ 2 ]

12 голосов
/ 12 июня 2019

Конечно, это возможно.

occurences = {k: word.count(k) for k in word}

print(occurences)

{'a': 2, 'b': 1, 'c': 1, 'd': 1}

В качестве альтернативы используйте Counter.

from collections import Counter

c = Counter(word)

print(c)

Counter({'a': 2, 'b': 1, 'c': 1, 'd': 1})
2 голосов
/ 12 июня 2019

Другое решение, использующее defaultdict .

from collections import defaultdict

occurrence = defaultdict(int)
for c in word.lower():
    occurrence[c] += 1

print(occurrence)

defaultdict(<class 'int'>, {'a': 2, 'b': 1, 'c': 1, 'd': 1})

Или другой без использования импорта.

occurrence = {}
for c in word.lower():
    occurrence[c] = occurrence.get(c,0) + 1

print(occurrence)

{'a': 2, 'b': 1, 'c': 1, 'd': 1}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...