を「+ = 1」増分を取るためにPythonのautovivを調整する:私のことができるようにしてみたい私はいくつかの共通のpython autovivificationコードのビルド辞書を使用しています
class autoviv(dict):
"""Implementation of perl's autovivification feature."""
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
value = self[item] = type(self)()
return value
ことの一つは、場合に値をインクリメントすることです
TypeError: unsupported operand type(s) for +=: 'autoviv' and 'int'
:エラーが返され
d['a']+=1
そう:NOキーが現在そう等+ =表記を使用して、指定された辞書ネスティング・レベルに存在しません
これを回避するには、キーをインクリメントする前にキーが存在するかどうかを確認するステップを作成しましたが、できればそのステップをやめてしまいます。
この強化機能を利用するには、上記のautoviv()コードをどのように変更する必要がありますか?私はグーグルで試してみたが、数時間かけてさまざまなアプローチを試みたが、喜びはなかった。
アドバイスありがとうございます!
'd [" a "]は何を返しますか? – Sraw
申し訳ありません。上記のautovivの働きは、最小入力は「d ['a'] = X(例えば1)」となります。 "d ['a']"がまだ存在しない場合は、そのキーを辞書に作成し、その値= {a:1}のように指定する番号を設定します。キーが既に存在する場合のみ、 "d ['a'] + = 1"を使用できます。今のところ、キーが存在せず+ = 1を使用すると、エラーが発生します。存在しないキーの場合、 "d ['a'] + = 1"を使用し、k:vペアをエラーをスローせずに自動作成するようにしたいと考えています。応答していただきありがとうございます! – ouonomos