LoginSignup
0
1

More than 3 years have passed since last update.

Python dictを一定量に分割して取り出す

Posted at

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])

より突っ込んだことを書くと長くなるので記事にまとめています

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1