Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで辞書の値(リスト)の要素数をカウントする3つの方法

キーと値のペアを持つ辞書の中には、値そのものがリスト型になっているものがあります。この記事では、そのような辞書に含まれるリストの要素数を合計してカウントする方法を、3つの異なるアプローチで解説します。

方法1:isinstance を使う

まず基本となるのが、isinstance() 関数を使って辞書の各値がリストかどうかを判定する方法です。判定結果が True の場合に、count 変数へそのリストの長さを加算していきます。

サンプルコード

# 辞書の定義
Adict = {'Days': ['Mon','Tue','wed','Thu'],
    'time': '2 pm',
    'Subjects': ['Phy','Chem','Maths','Bio']
    }
print('Given dictionary:\n', Adict)
count = 0
# isinstance を使用
for x in Adict:
    if isinstance(Adict[x], list):
        count += len(Adict[x])
print('The number of elements in lists:\n', count)

実行結果

Given dictionary:
{'Days': ['Mon', 'Tue', 'wed', 'Thu'], 'time': '2 pm', 'Subjects': ['Phy', 'Chem', 'Maths', 'Bio']}
The number of elements in lists:
8

'time' キーの値は文字列のため判定から除外され、'Days' と 'Subjects' のリスト要素数である 4 + 4 = 8 が出力されます。

方法2:items() を使う

items() メソッドを使うと、辞書のキーと値を同時に取り出しながらループ処理できます。それぞれの値に対して isinstance() を適用し、リストかどうかを判定するのがポイントです。キー名を直接扱えるため、コードの可読性が高まります。

サンプルコード

# 辞書の定義
Adict = {'Days': ['Mon','Tue','wed','Thu'],
    'time': '2 pm',
    'Subjects': ['Phy','Chem','Maths','Bio']
    }
print('Given dictionary:\n', Adict)
count = 0
# .items() を使用
for key, value in Adict.items():
    if isinstance(value, list):
        count += len(value)
print('The number of elements in lists:\n', count)

実行結果

Given dictionary:
{'Days': ['Mon', 'Tue', 'wed', 'Thu'], 'time': '2 pm', 'Subjects': ['Phy', 'Chem', 'Maths', 'Bio']}
The number of elements in lists:
8

方法3:enumerate を使う

enumerate() 関数は、辞書の項目にインデックス番号を付けて展開します。x[1][1] のようにアクセスすることで各項目の「値」部分を取得し、isinstance() でリストかどうかを判定できます。

サンプルコード

# 辞書の定義
Adict = {'Days': ['Mon','Tue','wed','Thu'],
    'time': '2 pm',
    'Subjects': ['Phy','Chem','Maths','Bio']
    }
print('Given dictionary:\n', Adict)
count = 0
for x in enumerate(Adict.items()):
    if isinstance(x[1][1], list):
        count += len(x[1][1])
print('The number of elements in lists:\n', count)

実行結果

Given dictionary:
{'Days': ['Mon', 'Tue', 'wed', 'Thu'], 'time': '2 pm', 'Subjects': ['Phy', 'Chem', 'Maths', 'Bio']}
The number of elements in lists:
8

まとめ

いずれの方法でも結果は同じ「8」となります。シンプルさでは items() を使った方法が最も読みやすく、実際の開発ではこちらが推奨されます。enumerate() はインデックスが必要な場面で活躍するため、状況に応じて使い分けるとよいでしょう。

  1. 【Python入門】リスト・タプル・辞書の違いを徹底解説

    Pythonの3大コレクション:リスト、タプル、辞書 Pythonには複数のデータをまとめて扱うためのコレクション型が用意されています。中でもよく使われるのがリスト(list)、タプル(tuple)、辞書(dict)の3つです。それぞれ特徴が異なるため、用途に応じて使い分けることが重要です。 基本的な違いの概要 リストとタプルはシーケンス(順序付き)オブジェクトであり、要素を順番に並べて管理します。一方、辞書はキーと値のペアを格納するハッシュテーブル構造です。 リストとタプルは「順序を持つコレクション」ですが、辞書は「順序を持たないコレクション」として扱われます。 リストと辞書はミュータブ

  2. Pythonでリスト内のオブジェクトの出現回数をカウントする方法

    Pythonのリスト内に含まれる特定のオブジェクトの出現回数を調べたい場合、いくつかの方法があります。状況に応じて最適な方法が異なるため、それぞれの特徴を理解しておくと便利です。 listクラスのcount()メソッドを使う方法 リストクラスが標準で提供している count() メソッドを使用すると、指定した1つのオブジェクトがリスト内に出現する合計回数を取得できます。このメソッドは、呼び出し元のリストの中から、引数として渡したオブジェクトと一致する要素の総数を返します。 特定のオブジェクト1つだけのカウントが必要な場合は、この方法が最もシンプルで効率的です。 使用例 >>>