Python で複数の値を持つ辞書

Hemank Mehtani 2023年1月30日
  1. ユーザー定義関数を使用して、辞書のキーに複数の値を追加する
  2. defaultdict モジュールを使用して、辞書のキーに複数の値を追加する
  3. setdefault() メソッドを使用して、ディクショナリの特定のキーに複数の値を追加する
Python で複数の値を持つ辞書

Python の辞書は、キーと値のペアの形式で要素のグループを構成します。通常、ディクショナリのキーには単一の値があります。

ただし、キーの値をリストのようなコレクションとして持つことができます。このようにして、特定のキーの辞書に複数の要素を含めることができます。

例えば、

d = {"a": [1, 2], "b": [2, 3], "c": [4, 5]}
print(d)

出力:

{'a': [1, 2], 'b': [2, 3], 'c': [4, 5]}

このチュートリアルでは、Python の辞書に複数の値をリストとして追加するさまざまな方法について説明します。

ユーザー定義関数を使用して、辞書のキーに複数の値を追加する

値をリストとして、キーと値のペアを辞書に追加する関数を作成できます。

例えば、

def dict1(sample_dict, key, list_of_values):
    if key not in sample_dict:
        sample_dict[key] = list()
    sample_dict[key].extend(list_of_values)
    return sample_dict


word_freq = {
    "example": [1, 3, 4, 8, 10],
    "for": [3, 10, 15, 7, 9],
    "this": [5, 3, 7, 8, 1],
    "tutorial": [2, 3, 5, 6, 11],
    "python": [10, 3, 9, 8, 12],
}
word_freq = dict1(word_freq, "tutorial", [20, 21, 22])
print(word_freq)

出力:

{'example': [1, 3, 4, 8, 10], 'for': [3, 10, 15, 7, 9], 'this': [5, 3, 7, 8, 1], 'tutorial': [2, 3, 5, 6, 11, 20, 21, 22], 'python': [10, 3, 9, 8, 12]}

上記のコードでは、関数内のパラメーターとして sample_dictkey、および list_of_values を使用して関数 dict1 を作成したことに注意してください。extend() 関数は、辞書のキーの値としてリストを追加します。

defaultdict モジュールを使用して、辞書のキーに複数の値を追加する

defaultdict はコレクションモジュールの一部です。これは、辞書のようなオブジェクトを返す dict クラスのサブクラスでもあります。存在しないキーの場合、デフォルト値が提供されます。

defaultdictdict はどちらも同じ機能を持っていますが、defaultdictkeyerror を発生させることはありません。

これを使用して、タプルのコレクションを辞書に変換できます。デフォルト値をリストとして指定します。したがって、同じキーが検出されるたびに、値がリストとして追加されます。

例えば、

from collections import defaultdict

s = [("rome", 1), ("paris", 2), ("newyork", 3), ("paris", 4), ("delhi", 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)
sorted(d.items())
print(d)

出力:

defaultdict(<class 'list'>,
            {'rome': [1],
             'paris': [2, 4], 
             'newyork': [3],
             'delhi': [1]
            }) 

setdefault() メソッドを使用して、ディクショナリの特定のキーに複数の値を追加する

setdefault() メソッドは、デフォルト値をキーに設定するために使用されます。キーが存在する場合、何らかの値を返します。それ以外の場合は、デフォルト値でキーを挿入します。キーのデフォルト値は none です。

この方法を使用して、キーの値としてリストを追加します。

例えば、

s = [("rome", 1), ("paris", 2), ("newyork", 3), ("paris", 4), ("delhi", 1)]
data_dict = {}
for x in s:
    data_dict.setdefault(x[0], []).append(x[1])
print(data_dict)

出力:

{'rome': [1], 'paris': [2, 4], 'newyork': [3], 'delhi': [1]}

関連記事 - Python Dictionary