Розділити словник на частини
Сьогодні виникла потреба поділити словник (dict) на дві частини. Задача зводиться до перетворення у список, який потім ділиться на дві частини, і створення з цих частин знову словників. Словник перетворюється у список парами (tuple)ключ-значення.
1 | big_dict = { |
Порядок елементів в словнику не визначений, тому якщо потрібні частини, поділені за певними критеріями, необхідно здійснити додаткове сортування списку. Якщо кількість елементів непарна - перший словник буде на один елемент менший (слайс не включає праву межу). В результаті отримаємо два словники
1 | {1: 'one', 2: 'two', 3: 'three'} |
Потім я вирішив узагальнити даний код для поділу на довільну кількість частин. Можна користуватися цією узагальненою функцією:
1 | import math |
Оскільки не завжди буде виконуватися ділення націло (в кожній частині однакова кількість елементів), можна зробити щоб всі частини були однакові і одна містила залишок
1 | def split_dict(big_dict: dict, parts: int): |
Для другого (я зараз про версію Пайтона) потрібно позабирати анотації типів і немає потреби явно приводити елементи словника до списку, а в першому варіанті привести до цілого числа int
результат math.ceil
.