\

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で辞書を分割する方法になります。巨大な辞書を扱うときや、通信に制約がある時などに活用できるかもしれません。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です