#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 /… приветствия