4 changed files with 88 additions and 18 deletions
@ -1,31 +1,56 @@ |
|||||||
|
"""Посчитать количество животных на каждую букву алфавита на странице 'Категория:Животные по алфавиту'. |
||||||
|
Для запроса к вики используется библиотека wikipediaapi. |
||||||
|
""" |
||||||
|
|
||||||
import wikipediaapi |
import wikipediaapi |
||||||
|
|
||||||
|
|
||||||
def get_all_titles_from_category(category: str) -> list: |
def get_all_titles_from_category(category: str) -> list: |
||||||
|
"""Собираем названия всех страниц из `category`, формируем из них |
||||||
|
список и возвращаем его. |
||||||
|
|
||||||
|
""" |
||||||
wiki = wikipediaapi.Wikipedia("ru") |
wiki = wikipediaapi.Wikipedia("ru") |
||||||
cat = wiki.page(category) |
cat = wiki.page(category) |
||||||
names = [c.title() for c in cat.categorymembers] |
names = [c.title() for c in cat.categorymembers] |
||||||
return names |
return names |
||||||
|
|
||||||
|
|
||||||
|
# get_counted_dict_with_first_letters |
||||||
def get_count_list_by_first_letter(names: list) -> dict: |
def get_count_list_by_first_letter(names: list) -> dict: |
||||||
names_dict: dict = {} |
"""Получить словарь из первых букв и их количества для каждого |
||||||
for n in names: |
элемента в `names`. |
||||||
first_letter = n[0] |
|
||||||
count = names_dict.get(first_letter, 0) |
Словарь ограничен русским алфавитом (без буквы Ы). Результат имеет |
||||||
names_dict[first_letter] = count + 1 |
вид {'А': 2, 'Б': 3, ...}. |
||||||
|
|
||||||
|
""" |
||||||
|
# Если изначально ограничить допустимые буквы алфавита, то можно |
||||||
|
# избежать лишних проверок и сделать код чище |
||||||
|
alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЭЮЯ" |
||||||
|
names_dict: dict = {l: 0 for l in alphabet} |
||||||
|
|
||||||
|
for name in names: |
||||||
|
first_letter = name[0] |
||||||
|
if first_letter not in alphabet: |
||||||
|
continue |
||||||
|
names_dict[first_letter] += 1 |
||||||
|
|
||||||
return names_dict |
return names_dict |
||||||
|
|
||||||
|
|
||||||
def main(): |
def main(category: str): |
||||||
wiki = wikipediaapi.Wikipedia("ru") |
# print("Запрос выполняется и может занять несколько секунд...") |
||||||
animals = get_all_titles_from_category("Категория:Животные по алфавиту") |
|
||||||
# animals = get_all_titles_from_category("Категория:Знаменитые животные по алфавиту") |
animals = get_all_titles_from_category(category) |
||||||
result: dict = get_count_list_by_first_letter(animals) |
result: dict = get_count_list_by_first_letter(animals) |
||||||
|
|
||||||
for names, count in result.items(): |
for names, count in result.items(): |
||||||
print(f"{names}: {count}") |
print(f"{names}: {count}") |
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
if __name__ == "__main__": |
||||||
main() |
category = "Категория:Животные по алфавиту" |
||||||
|
# меньшая по количеству животных категория, использовал для тестов |
||||||
|
# category = "Категория:Знаменитые животные по алфавиту" |
||||||
|
main(category) |
||||||
|
Loading…
Reference in new issue