Форум сайта python.su
Недавно принялся изучать пайтон. Необходимо сделать цикл, который будет считать кол-во каждого символа в тексте. Не пойму почему этот под не фурычит?
text = “eujiyghkiuyhjiu”
dic = {}
for c in text:
__dic += 1
Выдает KeyError
Создается пустой словарь, идет перебор каждого символа ,запись сколько раз он встречается в тексте.
Как сделать оптимальнее?
Офлайн
# text = 'eujiyghkiuyhjiu' dic = {} for c in text: if c not in dic: dic[c] = 1 else: dic[c] += 1
Отредактировано wi34rd (Фев. 24, 2017 02:29:00)
Офлайн
wi34rd
Use setdefault, Luke!
Офлайн
FishHookДействительно, используя метод setdefault() получается короче и удобнее.
wi34rd
Use setdefault, Luke!
message = "Съешь еще немного этих мягких французских булочек" count = {} for character in message: count.setdefault(character, 0) count[character] += 1 print(count)
Съешь же ещё немного этих мягких французских булочек, да выпей чаю
Отредактировано old_monty (Фев. 24, 2017 10:21:52)
Офлайн
old_monty
Вот еще лучше
from collections import defaultdict message = u"Съешь еще немного этих мягких французских булочек" c = defaultdict(int) for character in message: c[character] += 1 print(c)
from collections import Counter message = u"Съешь еще немного этих мягких французских булочек" c = Counter(message) print(c)
Офлайн
https://toster.ru/q/352619
“Вопрос задан 10 сент. 2016”
Офлайн