質問
次の辞書の場合:
{'id': 1, 'label': 'hello', 'remove_me': {'world': {'keep_me': 52}}}
remove_me
またはworld
キーなしで新しい辞書を作成したいのですが。
更新を編集:
要約すると、私は次のことをしたかった:
アイテムの値がネストされた辞書の場合。メイン辞書から現在のキー値を削除しながら、内部結果で新しい辞書を更新します。
アイテムの値がネストされたディクショナリではない場合、キー、値で新しいディクショナリを更新します。
受け入れられた答えはこれをカバーしています。
私は何を試しましたか?
{k:v for (k,v) in d.items() if not k == 'remove_me'}
利回り:
{'id': 1, 'label': 'hello'}
ネストされたdictを削除するときに必要なものとは異なります。
必要な出力:
{'id': 1, 'label': 'hello','keep_me': 52}
辞書をフラット化すること自体が重要です。これで目標は達成できましたか? (テストされていない、私は私の電話で入力していますa.t.m.):
def flattenDict(myDict, blacklist):
returnDict = {}
for key, val in myDict:
If isinstance(val, "dict"):
myDict.update(flattenDict(val))
Elif key in blacklist:
continue
Elif val in blacklist:
continue
returnDict[key] = val
return returnDict
cleanDict = flattenDict(myDict, ["remove_me", "world"])