listを一定区間、または一定数になるよう分割することは日常的にされているかと思いますが、辞書(dict)を一定量に区切る機会はあまりないかもしれません。
そんなニッチな辞書分割にも、いろいろな方法があります。ここでは、一番直感的でかんたんな方法(主観)をメモしておきます。
itertools.islice()を使います。
isliceで辞書を分割する実装
dict_slice.py
data = { i:i**2 for i in range(10) }
pprint.pprint(data, width=40, indent=4)
# {
# 0: 0,
# 1: 1,
# 2: 4,
# 3: 9,
# 4: 16,
# 5: 25,
# 6: 36,
# 7: 49,
# 8: 64,
# 9: 81
# }
from pprint import pprint
from itertools import islice
def dict_chunks(data, size):
it = iter(data)
for i in range(0, len(data), size):
yield {k:data[k] for k in islice(it, size)}
chunks = dict_chunks(data, size=3)
count = 0
for c in chunks:
print(f"chunk {count}: {c.keys()}")
count += 1
# chunk 0: dict_keys([0, 1, 2])
# chunk 1: dict_keys([3, 4, 5])
# chunk 2: dict_keys([6, 7, 8])
# chunk 3: dict_keys([9])
より突っ込んだことを書くと長くなるので記事にまとめています。