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

Python KeyError:初心者向けガイド

存在しないディクショナリ内のアイテムにアクセスしようとすると、PythonKeyErrorが発生します。プログラムを変更して、存在する辞書から項目を選択することにより、このエラーを修正できます。または、キーが最初に存在するかどうかを確認することで、このエラーを処理できます。

PythonKeyErrorの処理方法

KeyErrorで迎えられたばかりですか?心配しないでください! KeyErrorが発生した場合は、存在しないディクショナリ内のキーにアクセスしようとしていることを意味します。方法を知っていれば、このエラーの処理と修正は簡単です。

KeyErrorsは、try…exceptブロックを使用するか、「in」キーワードを使用するか、インデックスを使用して事前にキーをチェックすることで処理できます。

このガイドでは、Python KeyErrorとは何か、なぜそれらが発生するのかについて説明します。エラーの例とその修正方法を説明し、将来的にKeyErrorsに対処する方法を理解できるようにします。

始めましょう!

Python KeyErrorとは何ですか?

インデックス構文を使用して存在しないディクショナリ内のアイテムにアクセスしようとすると、PythonKeyErrorが発生します。このエラーは、Pythonが辞書に存在しないアイテムの値を返すことができないために発生します。

Pythonディクショナリは、中括弧({})内に格納されるキーと値のペアのセットです:

raspberry_pi = {
"name": "Raspberry Pi 4",
"price": 35.00,
"RAM": "4GB"
}

キーは「名前」、「価格」、「RAM」です。キーは辞書のコロンの前に表示されます。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

辞書でUSBポートの数を取得しようとするとどうなるか見てみましょう:

print(raspberry_pi["usb_ports"])

コードは次のようになります:

KeyError: 'usb_ports'

このエラーは、指定したキーが存在しないことを示しています。この場合、欠落しているキーは「usb_ports」です。

KeyError Python:ソリューション

Python辞書KeyErrorを処理するには、次のことができます。

  • インデックスを使用して事前にキーを確認してください
  • 「in」キーワードを使用してキーを確認します
  • tryを使用します…ブロックを除きます。

最適に機能するKeyErrorを処理するためのソリューションは、ユースケースによって異なります。

辞書get()メソッドを使用する

Pythonディクショナリのget()メソッドは、ディクショナリの値を返します。 get()メソッドを使用してデフォルト値を指定できます。指定したキーの名前に値がない場合、このデフォルト値が返されます。

次のコードを検討してください:

raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }

get_key = input("What information would you like to retrieve (name, price, RAM)? ")

print("The {} for this computer is {}.".format(get_key, raspberry_pi.get(get_key, "not available"))

Pythonインタープリターを使用してコードを実行し、何が起こるかを見てみましょう。

What information would you like to retrieve? ALU
The ALU for this computer is not available.

このコードでは、辞書のget()メソッドを使用して、辞書から「ALU」を取得します。このキー名に対応する値はありません。 get()メソッドは、指定したデフォルト値である「使用不可」を返します。

インデックスを使用して事前にキーを確認する

KeyErrorが発生しないように、インデックスを使用してキーの存在を確認できます。キーが辞書にある場合は、そのキーを使用できます。それ以外の場合は、そのキーに依存しない他のことを行うようにプログラムに指示できます。

Pythonの「raspberry_pi」辞書のキーにアクセスするプログラムを書いてみましょう。インデックスを使用して、キーが辞書にあるかどうかを確認しましょう:

raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }

get_key = input("What information would you like to retrieve (name, price, RAM)? ")

if raspberry_pi[get_key]:
print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
else:
	print("This information is not available.")

Pythonの「if」ステートメントを使用して、キーが存在するかどうかを確認しました。 「raspberry_pi[get_key]」は、キーが存在する場合にのみ値を返します。これは、キーが存在する場合、「if」ステートメントが実行されることを意味します。キーが存在しない場合、「else」ステートメントが実行されます。

RaspberryPiのRAMを見つけてみましょう:

What information would you like to retrieve (name, price, RAM)? RAM
The RAM for this computer is 4GB.

それでは、コンピュータに搭載されているUSBポートの数を調べてみましょう。

What information would you like to retrieve (name, price, RAM)? USB
This information is not available.

私たちのコードはKeyErrorを発生させません!これは、キーを使用する前に、キーが最初に存在するかどうかを確認したためです。 「else」ステートメント内でraspberry_pi[get_key]を使用した場合、コードはKeyErrorを返します。

tryを使用する…ブロックを除く

Pythonのtry…exceptブロックはコード行を実行しようとします。そのコード行を実行できない場合、指定した例外に応じて、コードでカスタムエラーが発生します。

try…exceptブロックを使用して、エラーの存在を判断し、予期しないKeyErrorがPythonプログラムを支援するのを防ぐことができます。

ブロックを除いて、以前のコンピュータの例のカスタムエラーをtry…exceptブロックを使用して定義しましょう:

raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }

get_key = input("What information would you like to retrieve (name, price, RAM)? ")

try:
	print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
except KeyError:
	print("This information is not available.")

try…exceptブロックを使用して、RaspberryPiコンピューターに関する特定の情報をコンソールに出力しようとします。コードが「try」ブロックのどこかでKeyErrorを発生させた場合、コードは「except」ブロックの内容を実行します。

これは、KeyErrorが発生するたびに、「この情報は利用できません」がコンソールに出力されることを意味します。コンピューターの名前を調べてみましょう:

What information would you like to retrieve (name, price, RAM)? name
The name for this computer is Raspberry Pi 4.

それでは、コンピューターのUSBポートの可用性について調べてみましょう。

What information would you like to retrieve (name, price, RAM)? USB
This information is not available.

このコードは、「try」ブロック内でKeyErrorを発生させます。これにより、コードはコードの「例外」ブロックを実行します。

inを使用して事前にキーを確認する

「in」キーワードは、Pythonのメンバーシップ演算子の1つです。アイテムが値のリストにあるかどうかをチェックします。 「in」キーワードを使用して、キーが辞書内にあるかどうかを確認できます。

このプログラムは、キーの値をコンソールに出力する前に、キーが存在するかどうかを確認します。

raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }

get_key = input("What information would you like to retrieve (name, price, RAM)? ")

if get_key in raspberry_pi:
print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
else:
	print("This information is not available.")

このコードは、「get_key」の値が「raspberry_pi」ディクショナリ内のキーであるかどうかをチェックします。キーが存在する場合、「if」ステートメントが実行されます。それ以外の場合は、「else」ステートメントが実行されます。コンピュータのCPUに関する情報を確認してみましょう:

What information would you like to retrieve (name, price, RAM)? CPU
This information is not available.

コンピューターの名前を確認しましょう:

What information would you like to retrieve (name, price, RAM)? name
The name for this computer is Raspberry Pi 4.

私たちのコードは機能します!存在しないキーを検索すると、「else」ステートメントが実行されます。これは、「else」ブロックのキーにアクセスしようとしないため、コードでKeyErrorを発生させることができないことを意味します。

私たちのコードは機能します!存在しないキーを検索すると、「else」ステートメントが実行されます。これは、「else」ブロックのキーにアクセスしようとしないため、コードでKeyErrorを発生させることができないことを意味します。

結論

存在しないディクショナリから値にアクセスしようとすると、KeyErrorが発生します。キーエラーを解決するには、使用する前にキーを事前に確認し、キーが存在する場合にのみ使用します。 try…exceptブロックを使用してキーエラーを処理できます。

Pythonプログラミング言語の学習方法に関するアドバイスについては、包括的なPythonの学習方法ガイドをご覧ください。このガイドには、主要な学習リソース、書籍、コースへのリンクがあります。


  1. キーがPythonディクショナリに存在するかどうかを確認するにはどうすればよいですか?

    in演算子を使用して、Pythonディクショナリにキーが存在するかどうかを確認できます。 in演算子は、キーを辞書と照合し、キーの存在を確認します。 例 my_dict = {'name': 'TutorialsPoint', 'time': '15 years', 'location': 'India'} print('name' in my_dict) print('foo' in my_dict) 出力 これにより出力が得られます- True False

  2. Python辞書からキーを削除する方法は?

    Pythonのdelキーワードは、ほとんどすべてのオブジェクトで使用されます。辞書から特定のアイテムを削除するには、delステートメントにキー句を指定します >>> D1 = {1: a, 2: b, 3: c, x: 1, y: 2, z: 3} >>> del D1[x] >>> D1 {1: a, 2: b, 3: c, y: 2, z: 3} キーと値のペアを削除する効果は、pop()メソッドでも実現できます。メソッドはキーを取得します(同じキーに複数の値が割り当てられている場合はオプションで値を取得します) >>