私はAPIからの応答としてJSON文書に基づいて入れ子になったPython辞書を作成するアプリケーションを持っています。例:yaml構成に対してオブジェクトの値を検証します
colleagues = [
{ "name": "John",
"skills": ["python", "java", "scala"],
"job": "developer"
},
{ "name": "George",
"skills": ["c", "go", "nodejs"],
"job": "developer"
}]
この辞書は、さらに多くのネストレベルを持つことができます。 私がしたいのは、YAML設定ファイルでユーザーが自分の任意の条件を定義して(たとえば、スキルの中に「Python」がある、または名前が「John」である同僚を探すためです) Python辞書と照合する。
私は彼らがYAMLファイルに次のようにそれを設定させることを考えたが、これはexec()
を使用して必要になり、私はセキュリティ上の理由で避けしたい:
constraints:
- "python" in colleagues[x]["skills"]
- colleagues[x]["name"] == "John"
他のどのようなオプションは、そのようなのためにあります問題は、ユーザーが辞書の値のための独自の制約を指定することができるように?ここでも、上記の辞書は単なる例です。実際のサイズとサイズははるかに大きいです。
フェッチしたJSONを使ってツリーを作成し、 '' skill:python "'や '' name:John "'のようなクエリを使ってツリーをクエリできますか?私は、手動でツリーを作成するためにオーバーヘッドがないことを確認したいだけです。 –
はい、Pythonの 'json'モジュールを使ってツリーを辞書のリストに変換し、クエリから作成した述語関数を使って必要な辞書だけをフィルタリングします。 – PaulMcG