私は、返すデータで非常に冗長なAPIのいくつかのエンドポイントを消費しています。このデータのサブセットを別のコードに提供したいと思います。Python 3のネストされた辞書をマスクして、特定の項目だけを含む新しい辞書を返す方法はありますか?
私は(私が通って、フィルタループに予定)このようないくつかの辞書を与えていたとします
asset = {
'id': 1,
'name': 'MY-PC',
'owner': 'me',
'location': 'New York City',
'model': {
'id': 1,
'name': 'Surface',
'manufacturer': {
'id': 1,
'name': 'Microsoft'
}
}
}
私はその「マスク」と一緒にその辞書を取る関数を作成したいです許可された項目のみの新しい辞書を作成するために使用されます。
mask = {
'id': True,
'name': True,
'model': {
'id': True,
'name': True,
'manufacturer': {
'name': True
}
}
}
機能は、その後、これを返す必要があります:
mask = {
'id': 1,
'name': 'MY-PC',
'model': {
'id': 1,
'name': 'Surface',
'manufacturer': {
'name': 'Microsoft'
}
}
}
がすでに構築されたものがある。これは、例えば、マスクかもしれません(ただし、私は結果のコード最も簡潔になりどんなフォーマットで作業することができます)これを助けるのに役立つPython 3へ?これを手動で行う必要がある場合は、すぐにかなり醜いものになるようです。私はitertools.compress
を見つけましたが、それはリストのようであり、辞書の複雑さを処理しません。
['jq(1)'](https://stedolan.github.io/jq/)について聞いたことがありますか? – o11c
マスクキーに一致するデータキーがないとywhatが発生するはずですか? –