Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 23, 2017 22:32:59

zakonnik
От: Анапа
Зарегистрирован: 2017-02-23
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите новичку

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

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

Выдает KeyError
Создается пустой словарь, идет перебор каждого символа ,запись сколько раз он встречается в тексте.
Как сделать оптимальнее?

Офлайн

#2 Фев. 24, 2017 02:28:39

wi34rd
Зарегистрирован: 2016-10-08
Сообщения: 89
Репутация: +  2  -
Профиль   Отправить e-mail  

Подскажите новичку

 #
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)

Офлайн

#3 Фев. 24, 2017 06:39:30

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подскажите новичку

wi34rd
Use setdefault, Luke!



Офлайн

#4 Фев. 24, 2017 08:35:01

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Подскажите новичку

FishHook
wi34rd
Use setdefault, Luke!
Действительно, используя метод setdefault() получается короче и удобнее.
 message = "Съешь еще немного этих мягких французских булочек"
count = {}
for character in message:
    count.setdefault(character, 0)
    count[character] += 1
print(count)
Поправка: чтобы в этой фразе хотя бы 1 раз встречалась каждая буква русского алфавита, она должна быть такой:
Съешь же ещё немного этих мягких французских булочек, да выпей чаю

Отредактировано old_monty (Фев. 24, 2017 10:21:52)

Офлайн

#5 Фев. 24, 2017 08:55:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подскажите новичку

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)



Офлайн

#6 Фев. 24, 2017 11:14:23

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Подскажите новичку

https://toster.ru/q/352619
“Вопрос задан 10 сент. 2016”

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version