【Python入門】Pythonのheapq.merge関数とは?使い方と活用方法を徹底解説(Python 3.11)

Python

はじめに

Pythonはシンプルで読みやすい文法が特徴のプログラミング言語です。数値処理やデータのソートなど、効率的に処理するための便利なモジュールが多数用意されています。その中でも、heapqモジュールはヒープ(優先度付きキュー)を扱うためのライブラリで、データのソートやマージに役立ちます。

この記事では、heapq.merge関数の基本的な使い方から、実用的な応用例まで徹底解説します。

heapq.merge関数とは?

heapq.merge関数は、複数のソート済みのイテラブル(リストやタプルなど)を統合して、ソート順のまま要素を順番に取り出すための関数です。イテラブル内の要素はあらかじめ昇順または降順にソートされている必要があります。

この関数はメモリ効率が良く、大規模なデータ処理にも適しています。

heapq.merge関数の基本構文

import heapq

heapq.merge(*iterables, key=None, reverse=False)

引数

  • iterables: ソート済みのイテラブルを複数受け取ります。
  • key: 比較に使う関数(省略可能)。
  • reverse: 降順にソートする場合はTrueを指定します(Python 3.10以降で利用可能)。

戻り値

ジェネレーターオブジェクトを返します。

heapq.merge関数の使用例

例1: 昇順のリストをマージする

import heapq

list1 = [1, 3, 5, 7]
list2 = [2, 4, 6, 8]

result = heapq.merge(list1, list2)
print(list(result))

出力結果:

[1, 2, 3, 4, 5, 6, 7, 8]

heapq.merge関数の応用例

例2: キーを使ったソートのマージ

辞書のリストをソートしてマージする場合の例です。

import heapq

list1 = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}]
list2 = [{'name': 'Charlie', 'age': 20}, {'name': 'David', 'age': 35}]

result = heapq.merge(list1, list2, key=lambda x: x['age'])

for person in result:
    print(person)

出力結果:

{'name': 'Charlie', 'age': 20}
{'name': 'Alice', 'age': 25}
{'name': 'Bob', 'age': 30}
{'name': 'David', 'age': 35}

まとめ

heapq.merge関数は、複数のソート済みデータをメモリ効率良く統合するために便利な関数です。特に、大量のデータを扱う場合やカスタムソートを適用する場面で有効です。Python 3.11にも対応しており、最新のPython環境でも安心して使用できます。

ぜひ本記事のサンプルコードを参考に、さまざまなデータ処理に活用してみてください。