PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

辞書のキーの長さを取るにはどうすれば良いですか?への回答とlenの解説

id:hirokiky です。 今日はPythonの便利な len 関数について、 PyQサポート で回答したことから抜粋してお伝えします。

Python公式ドキュメントlen関数: https://docs.python.jp/3/library/functions.html#len

ご質問と回答

辞書から d.keys() で dict_keys(['年齢', '身長', '体重', '視力', '名前']) を取り出せました。 このkeyがいくつあるかを取得することはできますか?どうすればよいですか? (この例では5)

はい。可能です! len という関数を使うことで、キーの数を取得できます。

d = {"年齢": 25, "身長": 165, "体重": 45, "視力": 0.1, "名前": "清原"}
keys = d.keys()

# 長さを取得して、表示する
key_length = len(keys)
print(key_length)

また、辞書のキーの数は辞書の要素数と同じ意味になります。 以下のように直接 len(d) としても同じ値が取得できます。

len(d)

len関数は他にも使えます

len(長さや数を測りたいもの) とすることで値が取れます。 他にも複数の値を持つものであれば len が使えます。

# リスト
l = ["A", "B", "C"]
len(l)  # リスト l の長さ 3 になります

# 文字列
s = "清原弘貴"
len(s)  # 文字列 s の長さ 4 になります

# 辞書
d = {"年齢": 25, "身長": 165, "体重": 45, "視力": 0.1, "名前": "清原"}
len(d)  # 辞書 d の要素の数 5 になります

keys = d.keys()
len(keys)  # 辞書 d のキーの数 5 になります(要素の数と同じです)

# 集合
s = {"a", "b"}
len(s)  # 集合 s の要素の数 2 になります

ですが、数値などには長さがありませんのでエラーになります。 「TypeError(型の間違いのエラー): int の型は len が無いよ」というエラーです。

>>> len(8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()

ちょっと踏み込んで:lenってどういう仕組みなの?

少し難しい内容になるかもしれませんが、Pythonの深い部分のお話です。 len はPythonの色々な型(辞書、リストや集合)に対して使えますが、どういった仕組みで動作しているんでしょう。

清水川さん の「Pythonはどうやってlen関数で長さを手にいれているの?」というPyConJP2017年の発表が参考になります (初級から順に説明されているので、少し覗いてみるだけでも面白いです)。

以上です。

len はPythonのプログラム中でもよく使われる関数です。 ぜひ使い方を身につけておきましょう。

PyQのサポートでは「プログラムが動かない」という質問だけでなく「これって何なの?」や「意味の解説をしてほしい」などのご質問も受け付けています。 ぜひ、Pythonやプログラミングの疑問を解決して効果的にプログラミングを身に着けられるようになりましょう。

pyq.jp