Python Tech 辞書

Python 辞書(dict)が空か判断する方法、空にする方法

Pythonの辞書(dict)はキー・バリューのデータを格納できる変数型です。

今回は辞書に要素が何も含まれていない状態(空)かどうか判断する方法について、現役エンジニアが正確に解説しています。

  • 辞書を空にする方法
  • 辞書が空か、要素が含まれているか判定する

辞書(dict)のキーによる検索の仕組みについては別のページで解説しています。

 

結論

辞書を空にする

d = {}

または

d.clear()

 

辞書が空か、要素が含まれているか判定 any()

d = {}
print(any(d))
# False

d = {1:'foo'}
print(any(d))
# True

 

実行環境

Python 3.9.2

 

辞書を空にする方法

変数に {} を割り当てる

Pythonの辞書(dict)に要素が1つも含まれていない状態(空)にする一般的な方法は、辞書を初期化するときと同じく{}を割り当てることです。

d = {1:'foo', 2:'bar', 3:'baz'}
print(d)
# {1: 'foo', 2: 'bar', 3: 'baz'}

d = {}
print(d)
# {}

 

これで辞書 d には空の辞書オブジェクトが割り当てられます。コードの理解が容易で、多くのケースではこの方法で十分です。

より正確に理解する上で、上記のように初期化しただけでは、元の辞書インスタンス(辞書の各要素)が削除されたわけではないことに注意しましょう。この方法では、新しい辞書インスタンスが生成されて、それがdに割り当てられただけです。

辞書インスタンスの要素を消去するには次のdict.clear()メソッドを使用します。

 

dict.clear()を使用する

元の辞書インスタンスの中身を消去するには dict.clear() メソッドを使用します。

例えば、辞書 d のすべての要素を削除したいときは次のようにします。

d = {1:'foo', 2:'bar', 3:'baz'}
d.clear()
print(d)
# {}

 

単に変数に{}を代入して初期化する方法との違いはなんでしょうか?

例えば、次のような辞書d1を生成し、それをd2に代入するときを考えます。このとき、d2d1の内容がコピーされて新しい辞書インスタンスが生成されるのではなく、d2d1のインスタンスを参照しているだけです。

d1 = {1:'foo', 2:'bar', 3:'baz'}

d2 = d1
print(d1)
# {1: 'foo', 2: 'bar', 3: 'baz'}
print(d2)
# {1: 'foo', 2: 'bar', 3: 'baz'}

 

ここで、d1の要素をdict.clear()で消去するとd2も空になります。

d1.clear()

print(d1)
# {}
print(d2)
# {}

 

同じ辞書インスタンスを複数の変数名から参照するコードなどではdict.clear()dict = {}を使い分ける必要があるでしょう。

 

辞書が空か、要素が含まれているか判定する

Pythonの辞書(dict)に要素が含まれていない(空)であることを判断するのに一般的なのはlen()を用いる方法です。

d = {1:'foo', 2:'bar'}
print(len(d))
# 2

d = {}
print(len(d))
# 0

 

長さが0であれば辞書が空であると判断できます。

また、同じく組み込み関数の any() を利用する方法もあります。

辞書に要素が含まれている場合はTrue、空の場合はFalseが返されます。

d = {}
print(any(d))
# False

d = {1:'foo'}
print(any(d))
# True

d = {1:None}
print(any(d))
# True

 

any()の使用コード例

d = {}
if any(d):
    print("空ではない")
else:
    print("空である")
# 空である

 

Pythonの学習法について

Python の勉強が辛くなっていませんか?

Pythonは比較的取り組みやすい言語と言われていますが、プログラミング初心者にとっては分からないことだらけ。

ゼロから独学で勉強するのは厳しい道のりです。

今回、様々な現場、システム、言語を経験してきた現役エンジニアの立場から、初心者でも挫折しない学習方法を解説する記事を書きました。もちろん、お金をかけずに習得できる方法も解説しています。

できるだけストレスがかからない勉強法を解説しているので、ぜひ参考にしてみてくださいね。

 

今回参考にしたページ・資料

ミュータブルなシーケンス型組み込み型 — Python 3.10.0b2 ドキュメント

any() 組み込み関数 — Python 3.10.0b2 ドキュメント

 

  • この記事を書いた人

次世代ペンギン

長いのでペンギンとお呼びください。システム開発・プログラミングのお仕事をしています。甘味とコーヒーは生命線。多くの人に役立つ情報のシェアが目標です。

人気の記事

1

会社員でプログラマーとして働いている人、インフラやネットワークのエンジニアとして働いている人の中には、フリーランスのプログラマーとして独立、もしくは転向したい人もいるので ...

2

キャリアアップのため、または高収入を目指して、しっかりプログラミングを学びたいという人が増えてきましたね。 この記事では現役のエンジニアである私が、実際に仕事で稼げるよう ...

3

フリーランスのプログラマーにとって収入の向上に最も直結するのはスキルです。 必要なスキル、スキルの獲得方法が気になる人も多いでしょう。 また、これからフリーランスを目指す ...

4

Vuetifyの v-progress-circular コンポーネントは、数値データや処理状況を環状(円状)のデザインで教えてくれるUIデザインです。 ローディングのス ...

5

Vuexのstore(ストア)を使うと、各コンポーネント間で個別にデータのやり取りすることなく、データを一元的に管理できます。Vueでは欠かせない機能といえるでしょう。 ...

-Python, Tech, 辞書
-,