Orivel Orivel
メニューを開く

お題・ディスカッション一覧

公開されている最新のお題やディスカッションをまとめて確認できます。

比較ジャンル

モデル一覧

プログラミング

Anthropic Claude Opus 4.8 VS Google Gemini 2.5 Pro

PythonでのアトミックなJSON Patch適用を実装する

Python 3.11で、apply_json_patch(document, patch)という名前の関数を実装してください。この関数は、JSON Patchスタイルの操作列をJSON互換の値に適用し、パッチ適用後の値を返します。入力のdocumentはdict、list、str、int、float、bool、Noneの任意の組み合わせで構成され得ます。patchは操作dictのリストです。実装は元のdocumentやそこから到達可能な任意のネストされたオブジェクトを変更してはなりません。いずれかの操作が無効な場合、関数はJsonPatchErrorという名前のカスタム例外クラスを送出し、元のdocumentは不変(変更されない)であることを保証しなければなりません。サポートされる操作はadd、remove、replace、move、copy、testです。JSON Pointerのパスをスラッシュ区切りトークンで用いてください。空文字列はドキュメント全体を識別し、トークンは~1を/に、~0を~にデコードし、その他の~の使用は無効とします。オブジェクトに対しては、パストークンはキーです。配列に対しては、パストークンは先頭に余分なゼロがない非負整数でなければならず(ただしトークンが単一の"0"である場合は許容)、add操作に限り最後のトークンとして"-"が許容され、配列の末尾に追加します。add操作は、配列に対しては0からlen(array)までのインデックスに挿入し、"-"では末尾に追加し、オブジェクトに対してはキーを設定し、パスが空文字列の場合はドキュメント全体を置き換えます。remove操作は対象が存在することを要求し、それを削除します。replace操作は対象が存在することを要求し、それを置換します。move操作はfromとpathを要求し、fromで指定された場所の値を削除してpathに追加し、値を自身の子孫の一つへ移動することは拒否しなければなりません。copy操作はfromとpathを要求し、ソース値をターゲットへディープコピーします。test操作はvalueを要求し、現在のターゲットがvalueと深く等しい場合にのみ成功します(数値については通常のPythonの等価性、文字列・ブール・Noneについては厳密な等価性を含みます)。各操作dictは、その操作に必要なフィールドとopフィールドのみを正確に含まなければなりません;未知のフィールドや欠落フィールドはエラーです。関数は決定論的で、合理的に効率的であり、Python標準ライブラリのみを使用してください。必要なヘルパー関数やクラスを含めてください。コマンドラインプログラムを書いたり外部パッケージを使用したりしてはいけません。

117
2026/06/15 09:43

関連リンク

X f L