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

Pythonのネストされた辞書の要素数を数える方法

ネストされたPython辞書の要素数を数える基本の考え方

Pythonでは、辞書に用意された items() メソッドを使うことで、すべてのキーと値のペアを順番に取り出しながら反復処理できます。

for k, v in students.items():

ネストされた(入れ子構造の)辞書の場合、各アイテムの値そのものがさらに辞書になっています。そこで、len(v) を使えば各サブ辞書の要素数を取得できます。ループの中でこの値を累積加算していけば、辞書全体の要素の合計数を求められます。

ループを使って要素数をカウントする例

以下は、2人の学生情報を持つネストされた辞書の全要素数を数えるサンプルコードです。

>>> students={"student1":{"name":"Raaj", "age":23, "subjects":["Phy", "Che", "maths"],"GPA":8.5},"student2":{"name":"Kiran", "age":21, "subjects":["Phy", "Che", "bio"],"GPA":8.25}}
>>> s=0
>>> for k,v in students.items():
    s=s+len(v)

ここで「要素」として数えられるのは、キーと値のペア1つずつです。この例では student1student2 のそれぞれが「name」「age」「subjects」「GPA」の4つのペアを持っているため、合計は8になります。実行結果を確認してみましょう。

>>> s
8

sum() を使ったより簡潔な書き方

上記のループ処理は、ジェネレータ式と組み込み関数 sum() を組み合わせることで、1行でコンパクトに表現できます。

>>> sum(len(v) for v in students.values())
8

students.values() ですべてのサブ辞書を取り出し、それぞれの len() の結果を sum() で合計しています。この書き方は可読性が高く、実務でもよく使われる定番のテクニックなので、覚えておくと便利です。

  1. Pythonで辞書を反復処理する2つの方法をわかりやすく解説

    Pythonの辞書(dict)オブジェクトを反復処理する方法は主に2つあります。1つ目は、keys()メソッドでキーのリストを取得し、各キーに対応する値を取り出す方法です。keys()メソッドを使った反復処理>>> D1 = {1:a, 2:b, 3:c} >>> for k in D1.keys(): print (k, D1[k]) 1 a 2 b 3 c keys()メソッドは辞書内のすべてのキーを返します。ループ内でキーを変数kに受け取り、D1[k]のように記述することで、そのキーに関連付けられた値へアクセスできます。items()メソッドを

  2. Pythonで文字列を辞書(dict)に変換する方法|ast.literal_evalとjson.loadsの使い分け

    Pythonでは、文字列形式で表現された辞書データを実際のdictオブジェクトに変換したい場面がよくあります。主な方法としては、標準ライブラリの ast.literal_eval() を使う方法と、json モジュールを使う方法の2つがあります。それぞれの特徴と使い方を詳しく見ていきましょう。 方法1:ast.literal_eval() を使う ast.literal_eval() は、文字列をPythonの式として安全に評価する関数です。任意のコードを実行できてしまう eval() とは異なり、リテラル構造以外は評価しないため、セキュリティ面でも安心して利用できます。 評価できるのは、文