Чтобы разделить словарь на несколько словарей в Python, вы можете использовать различные методы. Вот несколько подходов:
Метод 1: использование итерации и срезов
def split_dict(dictionary, chunk_size):
keys = list(dictionary.keys())
values = list(dictionary.values())
num_chunks = len(dictionary) // chunk_size
if len(dictionary) % chunk_size != 0:
num_chunks += 1
result = []
for i in range(num_chunks):
start = i * chunk_size
end = start + chunk_size
chunk_keys = keys[start:end]
chunk_values = values[start:end]
chunk_dict = dict(zip(chunk_keys, chunk_values))
result.append(chunk_dict)
return result
# Example usage
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
chunk_size = 2
result = split_dict(my_dict, chunk_size)
print(result)
Выход:
[{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}]
Метод 2: использование понимания списка
def split_dict(dictionary, chunk_size):
items = list(dictionary.items())
num_chunks = len(dictionary) // chunk_size
if len(dictionary) % chunk_size != 0:
num_chunks += 1
result = [{k: v for k, v in items[i * chunk_size:(i + 1) * chunk_size]} for i in range(num_chunks)]
return result
# Example usage
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
chunk_size = 2
result = split_dict(my_dict, chunk_size)
print(result)
Выход:
[{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}]
Метод 3: использование модуля itertools
import itertools
def split_dict(dictionary, chunk_size):
items = list(dictionary.items())
result = [dict(chunk) for chunk in itertools.zip_longest(*[iter(items)] * chunk_size, fillvalue={})]
return result
# Example usage
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
chunk_size = 2
result = split_dict(my_dict, chunk_size)
print(result)
Выход:
[{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}]
Обратите внимание, что предоставленные методы разделяют словарь на основе указанного размера фрагмента.