Создайте словарь букв и связанного с ними количества

#python #python-3.x

#python #python-3.x

Вопрос:

как я могу создать of letter и связанное с ними количество из строки? Путем создания словаря из строки? в Jupyter Hub

питер Пайпер сорвал щепотку маринованного перца; щепотку маринованного перца сорвал Питер; если Питер Пайпер сорвал щепотку маринованного перца, то где щепотка маринованного перца, сорванная Питером?

Комментарии:

1. collections.Counter(my_string)

2. Я не думаю, что это должно быть помечено python-requests

Ответ №1:

Использование Counter :

 from collections import Counter
t_str = "peter piper picked a peck of pickled peppers; a peck of pickled peppers peter picked; if peter piper picked a peck of pickled peppers, where's the peck of pickled peppers peter picked?"
print(Counter(t_str))
  

ВЫВОД:

 Counter({'e': 33, 'p': 32, ' ': 31, 'c': 12, 'k': 12, 'r': 11, 'i': 11, 'd': 8, 't': 5, 'f': 5, 's': 5, 'o': 4, 'l': 4, 'a': 3, ';': 2, 'h': 2, ',': 1, 'w': 1, "'": 1, '?': 1})
  

или

 print(dict((letter,t_str.count(letter)) for letter in set(t_str)))
  

ВЫВОД:

 {'?': 1, ',': 1, 'r': 11, 'p': 32, ' ': 31, 'k': 12, 'a': 3, 'l': 4, 'd': 8, 'h': 2, "'": 1, 'i': 11, 'w': 1, 'c': 12, ';': 2, 't': 5, 'o': 4, 's': 5, 'f': 5, 'e': 33}
  

РЕДАКТИРОВАТЬ (для подсчета встречаемости букв из a-z , независимо от их существования в строке, т. е. в этом случае оно было бы равно 0 ):

 import string
letter_set = string.ascii_lowercase

print(dict((letter,t_str.count(letter)) for letter in letter_set))
  

ВЫВОД:

 {'a': 3, 'b': 0, 'c': 12, 'd': 8, 'e': 33, 'f': 5, 'g': 0, 'h': 2, 'i': 11, 'j': 0, 'k': 12, 'l': 4, 'm': 0, 'n': 0, 'o': 4, 'p': 32, 'q': 0, 'r': 11, 's': 5, 't': 5, 'u': 0, 'v': 0, 'w': 1, 'x': 0, 'y': 0, 'z': 0}
  

Комментарии:

1. Просто для добавления, если вы импортируете строку ; letter_set = string.ascii_lowercase; вы можете заменить set(t_str) на letter_set, чтобы получать только буквы и игнорировать символы.

2. @dijksterhuis Действительно, добавлен. Спасибо! 🙂

3. Большое вам обоим спасибо!! Я не силен в программировании, так что еще раз спасибо!!

4. @D.Chesney, добро пожаловать, вы можете рассмотреть возможность принятия ответа, если это помогло: meta.stackexchange.com/questions/5234 /… приветствия