Pythonには辞書 (dict)というキー・バリュー型の便利で強力な変数が備わっています。他の言語では「連想配列」と呼ばれるものです。今回は辞書を分割する方法を解説します。
辞書を分割する
Pythonで辞書を分割するには、itertools.islice()
メソッドを使います。itertools
モジュールは標準ライブラリなのでインストールは不要(importは必要)。
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)}
上記のdict_chunks()
関数では、まず辞書をイテレータに変換しitertools.islice()
で一定範囲を抽出します。抽出した範囲を配列に戻してyield
することで、擬似的に辞書を分割しています。
使用例
以下のような辞書があるとします。
data = { i:i**2 for i in range(10) }
この辞書を3つの要素ごとに分割するには、以下のようにします。
chunks = dict_chunks(data, size=3)
chunks
変数には3要素ごとに分割後の辞書(ジェネレータ)が入ります。作られたジェネレータで以下のようにfor文を回したり、1つずつnext()
することでも分割された要素を得られます。
count = 0
for c in chunks:
print(f"chunk {count}: {c.keys()}")
count += 1
以上がPythonで辞書を分割する方法になります。巨大な辞書を扱うときや、通信に制約がある時などに活用できるかもしれません。