Найти - Пользователи
Полная версия: Подскажите новичку
Начало » Python для новичков » Подскажите новичку
1
zakonnik
Недавно принялся изучать пайтон. Необходимо сделать цикл, который будет считать кол-во каждого символа в тексте. Не пойму почему этот под не фурычит?

text = “eujiyghkiuyhjiu”
dic = {}
for c in text:
__dic += 1

Выдает KeyError
Создается пустой словарь, идет перебор каждого символа ,запись сколько раз он встречается в тексте.
Как сделать оптимальнее?
wi34rd
 #
text = 'eujiyghkiuyhjiu'
dic = {}
for c in text:
  if c not in dic:
    dic[c] = 1
  else:
    dic[c] += 1

Как-то так, я не проверял.
FishHook
wi34rd
Use setdefault, Luke!
old_monty
FishHook
wi34rd
Use setdefault, Luke!
Действительно, используя метод setdefault() получается короче и удобнее.
 message = "Съешь еще немного этих мягких французских булочек"
count = {}
for character in message:
    count.setdefault(character, 0)
    count[character] += 1
print(count)
Поправка: чтобы в этой фразе хотя бы 1 раз встречалась каждая буква русского алфавита, она должна быть такой:
Съешь же ещё немного этих мягких французских булочек, да выпей чаю
FishHook
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)
Shaman
https://toster.ru/q/352619
“Вопрос задан 10 сент. 2016”
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB