pythonの辞書の要素の削除方法について紹介します。
del文、popメソッドなど、辞書の要素を削除する方法はいくつかあるので、それぞれの方法についてサンプルコードを交えながら紹介します。
この記事で分かること
■基本的な辞書の要素の削除方法
- del : キーを指定して辞書の要素を削除
- pop : キーを指定して辞書の要素を削除し、値を取得
- popitem : 辞書の要素を削除し、キーと値を取得
- clear : 辞書のすべての要素を削除
■辞書の要素の削除に関する、その他の例
- 値を指定して、辞書の要素を削除
- 値がNoneの場合、辞書の要素を削除
- 値が重複した場合、辞書の要素を削除
スポンサーリンク
del : キー(key)を指定して辞書の要素を削除
はじめに、del文を用いて辞書の要素を削除する方法を紹介します。
del文を使用すると、辞書のキーを指定して要素を削除できます。
書き方
del 辞書[ ' キー ' ]
以下、サンプルコードです。
### del文 : キーを指定して、辞書の要素を削除
fruits_dict= {'Apple':100, 'Banana':200, 'Grape':500, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
del fruits_dict['Banana']
print(fruits_dict)
# {'Apple': 100, 'Grape': 500, 'Orange': 100}
キーを複数指定すると、複数の要素を削除できます。
以下、サンプルコードです。
### del文 : 複数のキーを指定して、辞書の要素を削除
fruits_dict= {'Apple':100, 'Banana':200, 'Grape':500, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
del fruits_dict['Banana'], fruits_dict['Grape']
print(fruits_dict)
# {'Apple': 100, 'Orange': 100}
存在しないキーを指定すると、エラー停止します。
### del文 : 存在しないキーを指定
fruits_dict= {'Apple':100, 'Banana':200, 'Grape':500, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
del fruits_dict['Peach']
print(fruits_dict)
# KeyError: 'Peach'
存在しないキーを誤って指定してしまった際にエラー停止させたくない場合は、
例外処理をすればエラー停止を回避できます。
以下、例外処理をしたサンプルコードです。
### del文 : 存在しないキーを指定した場合に、エラー停止しないように例外処理
fruits_dict= {'Apple':100, 'Banana':200, 'Grape':500, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
del_key = 'Peach'
try :
del fruits_dict[del_key]
except KeyError :
print('存在しないキーです')
print(fruits_dict)
# 存在しないキーです
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
try文を用いて、例外処理をしています。
KeyErrorが発生した際の処理を、except節に記述しています。
例外処理については、下記記事で紹介しています。
スポンサーリンク
pop : キー(key)を指定して辞書の要素を削除し、値(value)を取得
次に、辞書のpopメソッドの使い方について紹介します。
popメソッドを使用すると、辞書のキーを指定して要素を削除したうえで、値を取得できます。
書き方
値 = 辞書.pop( ' キー ' , default )
「default」は省略可能です。
「default」には、指定したキーが存在しない場合の返り値を指定できます。
以下、辞書のpopメソッドのサンプルコードです。
### popメソッド : キーを指定して辞書の要素を削除し、値を取得
fruits_dict= {'Apple':100, 'Banana':200, 'Grape':500, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
val = fruits_dict.pop('Banana')
print(fruits_dict)
# {'Apple': 100, 'Grape': 500, 'Orange': 100}
print(val)
# 200
存在しないキーを指定すると、エラー停止します。
### popメソッド : 存在しないキーを指定
fruits_dict= {'Apple':100, 'Banana':200, 'Grape':500, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
val = fruits_dict.pop('Peach')
print(fruits_dict)
# KeyError: 'Peach'
存在しないキーを誤って指定してしまった際にエラー停止させたくない場合は、
default値を指定すればエラー停止を回避できます。
以下、default値にNoneを指定したサンプルコードです。
### popメソッド : 存在しないキーを指定した場合に、エラー停止しないようにdefaultを指定
fruits_dict= {'Apple':100, 'Banana':200, 'Grape':500, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
val = fruits_dict.pop('Peach', None)
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
print(val)
# None
popitem : 辞書の要素を削除し、キー(key)と値(value)を取得
次に、辞書のpopitemメソッドの使い方について紹介します。
popitemメソッドを使用すると、辞書の要素を削除したうえで、キーと値を取得できます。
書き方
辞書.popitem( )
なお、Python3.6までは削除される要素はランダムでしたが、
Python3.7以降の辞書が要素の順序を保証するようになった変更に伴い、必ず最後の要素を削除するようになりました。
以下、popitemメソッドを用いて辞書の要素を削除するサンプルコードです。
### popitemメソッド : 辞書の要素を削除し、キーと値を取得
fruits_dict= {'Apple':100, 'Banana':200, 'Grape':500}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500}
fruit, price = fruits_dict.popitem()
print(fruits_dict)
# {'Apple': 100, 'Banana': 200}
print(fruit)
# Grape
print(price)
# 500
clear : 辞書のすべての要素を削除
次に、辞書のclearメソッドの使い方について紹介します。
clearメソッドを使用すると、辞書のすべての要素を削除できます。
書き方
辞書.clear( )
以下、clearメソッドで辞書の要素をすべて削除するサンプルコードです。
### clearメソッド : 辞書のすべての要素を削除
fruits_dict = {'Apple':100, 'Banana':200, 'Grape':500}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
fruits_dict.clear()
print(fruits_dict)
# {}
ここまで、辞書の要素を削除するdel文や、popメソッドなどの使い方について紹介してきました。
以降では、辞書の要素の削除に関して、より実践的な例をいくつか紹介します。
スポンサーリンク
値(value)を指定して、辞書の要素を削除
値を指定して、辞書の要素を削除する方法を紹介します。
以下、値が500の場合は要素を削除するサンプルコードです。
辞書内包表記内で、値が500かどうか判定しています。
### 値を指定して、辞書の要素を削除
fruits_dict1 = {'Apple':100, 'Banana':200, 'Grape':500}
print(fruits_dict1)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Orange': 100}
fruits_dict2 = {fruit:price for fruit, price in fruits_dict1.items() if price != 500}
print(fruits_dict2)
# {'Apple': 100, 'Banana': 200}
> fruits_dict2 = {fruit : price for fruit, price in fruits_dict1.items() if price != 500}
辞書内包表記で記載しています。
" fruit, price in fruits_dict1.items() " の部分では、辞書のitemsメソッドを用いて、辞書のキーと値をすべて取り出し、それぞれfruit、priceに1つずつ渡しています。
" if price != 500 " の条件式で、priceが500ではないか判定しています。500以外の場合、条件式がTrueになります。
条件式がTrueの場合、" fruit : price " の部分をキーと値とした、新たな辞書が作成されます。
内包表記については、下記の記事で紹介しています。
辞書のitemsメソッドの使い方については、下記の記事で紹介しています。
値(value)がNoneの場合、辞書の要素を削除
値がNoneの場合に、辞書の要素を削除する方法を紹介します。
以下、辞書の値がNoneだった場合に、要素を削除するサンプルコードです。
前述の例の条件式を、" if price is not None " に変更しているだけです。
### 値がNoneの場合、辞書の要素を削除
fruits_dict1 = {'Apple':100, 'Banana':None, 'Grape':500, 'Lemon':150, 'Orange':None }
print(fruits_dict1)
# {'Apple': 100, 'Banana': None, 'Grape': 500, 'Lemon': 150, 'Orange': None}
fruits_dict2 = {fruit:price for fruit, price in fruits_dict1.items() if price is not None}
print(fruits_dict2)
# {'Apple': 100, 'Grape': 500, 'Lemon': 150}
スポンサーリンク
値(value)が重複した場合、辞書の要素を削除
次に、値が重複した場合に、辞書の要素を削除する方法を紹介します。
以下、値が重複していた場合、辞書の要素を削除するサンプルコードです。
辞書のitemsメソッドで、すべてのキーと値を取り出し、値だけを格納したリストを作成します。
その値のリストと辞書の値を比較しながら、値の重複がないかチェックしています。
### 辞書の値が重複した場合、要素を削除
fruits_dict1 = {'Apple':100, 'Banana':200, 'Grape':500, 'Lemon':150, 'Orange':100 }
print(fruits_dict1)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Lemon': 150, 'Orange': 100}
price_list = []
fruits_dict2 = dict()
for fruit, price in fruits_dict1.items() :
if price not in price_list:
price_list.append(price)
fruits_dict2[fruit] = price
print(fruits_dict2)
# {'Apple': 100, 'Banana': 200, 'Grape': 500, 'Lemon': 150}
> price_list = []
辞書の値を格納するための空のリストを作成します。
> fruits_dict2 = dict( )
値が重複しない場合に、新たな辞書として要素を格納するための空の辞書をdict関数で作成しています。
> for fruit, price in fruits_dict1.items() :
> if price not in price_list:
> price_list.append(price)
> fruits_dict2[fruit] = price
itemsメソッドで、辞書のすべてのキーと値を取り出し、fruitとpriceに渡しています。
if文では、priceが値のリストに含まれないか(重複していないか)確認しています。
値が重複していない場合、if文の中に入ります。
" price_list.append(price) " の部分で、priceを値のリストに追加し、次の要素の重複判定に利用します。
" fruits_dict2[fruit] = price " の部分で、新たな辞書に要素を追加しています。
スポンサーリンク
まとめ
pythonの辞書の要素の削除方法について紹介しました。
要素の削除方法は、辞書を扱ううえで必須なので、基本的な操作方法は覚えておくようにしましょう。
また、内包表記などの記述方法も使えると役立つ場面が多いので、併せて覚えておきましょう。
スポンサーリンク