Популярные слова
Несколько строк объединяются, приводятся к нижнему регистру и считаются через Counter.
from collections import Counter
def popular_words(limit, *texts):
words = []
for text in texts:
words.extend(text.lower().replace(".", "").replace(",", "").split())
return Counter(words).most_common(limit)
print(popular_words(5, "This is text.", "This text repeats text."))Группировка задач
Категория становится ключом, задачи - списком значений.
from collections import defaultdict
def group_tasks(tasks):
result = defaultdict(list)
for task, category in tasks.items():
result[category].append(task)
return dict(result)
print(group_tasks({"task1": "работа", "task2": "учёба", "task3": "работа"}))LRU-очередь
Повторная задача перемещается в конец, переполнение удаляет первый элемент.
from collections import OrderedDict
def update_lru_queue(tasks, new_tasks, max_size):
queue = OrderedDict.fromkeys(tasks)
for task in new_tasks:
if task in queue:
queue.move_to_end(task)
else:
queue[task] = None
while len(queue) > max_size:
queue.popitem(last=False)
return list(queue)
print(update_lru_queue(["task1", "task2", "task3", "task4", "task5", "task6"], ["task4", "task1", "task7", "task2"], 4))