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

Pythonで反復しながら辞書からアイテムを削除する


Pythonディクショナリは、順序付けられておらず、変更可能で、インデックスが付けられているコレクションです。それらにはキーと値があり、各アイテムはキーを使用して参照されます。この記事では、辞書からアイテムを削除する方法について説明します。

キーでのdelの使用

このアプローチでは、削除する必要のあるキー値をキャプチャします。 del関数を適用すると、それらのキーのキーと値のペアが削除されます。

# Given dictionary
ADict = {1: 'Mon', 2: 'Tue', 3: 'Wed',4:'Thu',5:'Fri'}

# Get keys with value in 2,3.
to_del = [key for key in ADict if key in(2,3)]

# Delete keys
for key in to_del: del ADict[key]

# New Dictionary
print(ADict)

出力

上記のコードを実行すると、次の結果が得られます-

{1: 'Mon', 4: 'Thu', 5: 'Fri'}

キーでリストを使用する

辞書からキーを含むリストを作成し、条件式を使用して削除に使用するキーを選択することもできます。以下の例では、除算の余りをゼロに等しい2と比較することにより、値が偶数のキーのみを考慮しています。

# Given dictionary
ADict = {1: 'Mon', 2: 'Tue', 3: 'Wed',4:'Thu',5:'Fri'}

# Get keys with even value
for key in list(ADict):
if (key%2) == 0:
del ADict[key]

# New Dictionary
print(ADict)

出力

上記のコードを実行すると、次の結果が得られます-

{1: 'Mon', 3: 'Wed', 5: 'Fri'}

アイテムを使用した削除

キーの代わりに、辞書の項目を使用して値を削除することもできます。ただし、アイテムを選択した後、削除するアイテムを選択するために間接的にキーを使用する必要があります。

# Given dictionary
ADict = {1: 'Mon', 2: 'Tue', 3: 'Wed',4:'Thu',5:'Fri'}

NewDict = []
# Get keys with even value
for key,val in ADict.items():
if val in('Tue','Fri'):
NewDict.append(key)

for i in NewDict:
del ADict[i]

# New Dictionary
print(ADict)

出力

上記のコードを実行すると、次の結果が得られます-

{1: 'Mon', 3: 'Wed', 4: 'Thu'}

  1. Pythonで辞書をキーで並べ替える方法は?

    Pythonの標準配布には、コレクションモジュールが含まれています。高性能コンテナデータ型の定義があります。 OrderedDictは、ディクショナリオブジェクトに追加されたエントリの順序を記憶するディクショナリのサブクラスです。順序付けられた辞書を反復処理すると、アイテムはキーが最初に追加された順序で返されます。 >>> from collections import OrderedDict >>> D = {5:fff, 3:ttt, 1:ooo,4:bbb, 2:ddd} >>> OrderedDict(D.items()) &nb

  2. Pythonで文字列から子音を削除するにはどうすればよいですか?

    この問題には正規表現を使用するのが最も簡単です。複数の文字は「|」で区切ることができますそして、re.sub(chars_to_replace、string_to_replace_with、str)を使用します。例: >>> import re >>> consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n'