Словарь манипуляций в Python - PullRequest
       0

Словарь манипуляций в Python

0 голосов
/ 21 февраля 2012

У меня есть фрагмент текста, и я создал словарь в Python.Он имеет слова в качестве ключей, и сколько раз слова встречались в тексте в качестве значений.Этот словарь отсортирован по убыванию значения поля значений.Вот фрагмент моего списка:

[('the\n', 1644), ('and\n', 872), ('to\n', 729), ('a\n', 632), ('she\n', 541), 
('it\n', 530), ('of\n', 514), ('said\n', 462), ('i\n', 410), ('alice\n', 386),
('in\n', 369), ('you\n', 365), ('was\n', 357), ('that\n', 280), ('as\n', 263), 
('her\n', 248), ('at\n', 212), ('on\n', 193), ('all\n', 182), ('with\n', 181),
('had\n', 178), ('but\n', 170), ('for\n', 153), ('so\n', 151), ('be\n', 148), 
('not\n', 145), ('very\n', 144), ('what\n', 136), ('this\n', 134),
('they\n', 130), ('little\n', 128), ('he\n', 120), ('out\n', 117),
('is\n', 108), ... ]

Я хочу напечатать 25 самых распространенных слов.это довольно просто, и я сделал это.Следующая часть должна напечатать 25 наиболее часто встречающихся слов, начинающихся с буквы «f».Как мне найти это и добавить в список из 25 наиболее часто встречающихся слов?

Кроме того, я должен добавить рейтинг всех слов.Например, в моем словаре «the» будет оцениваться как 1, «2» и так далее.Как добавить звание в список слов?

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Один из вариантов - использовать itertools.ifilter() и itertools.islice():

f_words = islice(ifilter(lambda x: x[0].startswith("f"), words), 25)
for word, count in f_words:
    print word.rstrip()

Вместо ifilter() вы также можете использовать выражение генератора:

f_words = islice((w for w, c in words if w.startswith("f")), 25)
for word in f_words:
    print word.rstrip()

Преимущество обоих этих подходов заключается в том, что вам не нужно сначала фильтровать весь список - цикл остановится после 25 слов.

2 голосов
/ 21 февраля 2012

Просто отфильтруйте, используя понимание списка:

f_words = [(word, freq) for (word, freq) in the_list if word.startswith('f')]

Поскольку исходный список отсортирован, будет и этот. Затем вы можете просто нарезать его, чтобы получить 25 лучших: f_words[:25]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...