同じ要素を持つ2つのJSONオブジェクトを異なる順序で比較するにはどうすればよいですか?

user1635536:

リストの順序を無視して、2つのJSONオブジェクトがPythonで等しいかどうかをテストするにはどうすればよいですか?

例えば ​​...

JSONドキュメントa

{
    "errors": [
        {"error": "invalid", "field": "email"},
        {"error": "required", "field": "name"}
    ],
    "success": false
}

JSONドキュメントb

{
    "success": false,
    "errors": [
        {"error": "required", "field": "name"},
        {"error": "invalid", "field": "email"}
    ]
}

aそして、bのオーダーにもかかわらず、同等比較してください"errors"リストは異なっています。

ゼロピレウス:

あなたは同じ要素を持つが、同じ比較する異なる順序で2つのオブジェクトをしたい場合は、行うには明白なことは、それらのソートコピーを比較している-例えば、辞書のためのあなたのJSON文字列によって表されるab

import json

a = json.loads("""
{
    "errors": [
        {"error": "invalid", "field": "email"},
        {"error": "required", "field": "name"}
    ],
    "success": false
}
""")

b = json.loads("""
{
    "success": false,
    "errors": [
        {"error": "required", "field": "name"},
        {"error": "invalid", "field": "email"}
    ]
}
""")
>>> sorted(a.items()) == sorted(b.items())
False

...しかし、それは機能しません。なぜなら"errors"、トップレベルの辞書のアイテムは、同じ要素を別の順序でsorted()並べたリストであり、「トップ」レベル以外の何もソートしようしないためです。反復可能。

これを修正するために、ordered見つかったリストを再帰的にソートする(そして辞書を(key, value)ペアのリストに変換して順序付けできるようにする)関数を定義できます

def ordered(obj):
    if isinstance(obj, dict):
        return sorted((k, ordered(v)) for k, v in obj.items())
    if isinstance(obj, list):
        return sorted(ordered(x) for x in obj)
    else:
        return obj

この関数をaandに適用するb、結果は次のように比較されます。

>>> ordered(a) == ordered(b)
True

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの2つの要素データセット間で異なるオブジェクトを取得するにはどうすればよいですか?

分類Dev

順序に関係なく、2つのオブジェクトに同じ単語が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

同じタイプに強制せずにPerlで2つのオブジェクトを比較するにはどうすればよいですか?

分類Dev

一致する要素がある場合、2つの別々のオブジェクト/配列に1つの同じ要素があり、2つのオブジェクトを1つの配列に連結するかどうかを比較するにはどうすればよいですか?Javascript

分類Dev

同じクラスの2つのオブジェクトを適切に比較するにはどうすればよいですか?

分類Dev

2つの異なるオブジェクトキーを比較し、キーがJavascriptで同じである場合、その値を更新するにはどうすればよいですか?

分類Dev

長さが異なるオブジェクトの2つの配列を比較するにはどうすればよいですか?

分類Dev

2つのオブジェクトから同じ値でオブジェクトを作成するにはどうすればよいですか?

分類Dev

(異なる長さの)オブジェクトの配列を、元の配列の要素とは異なるプロパティを持つ1つのオブジェクトに変換するにはどうすればよいですか?

分類Dev

ポリモーフィズムを使用して、同じ基本クラスを持つ異なるオブジェクトを持つunordered_setsに同じ操作を適用するにはどうすればよいですか?

分類Dev

C#で2つの異なるクラスオブジェクトの同じプロパティを比較するにはどうすればよいですか?

分類Dev

2つのオブジェクトを比較するにはどうすればよいですか

分類Dev

Numpyを使用して要素の順序に関係なく、異なる配列で同じ行を見つけるにはどうすればよいですか?

分類Dev

同じ特異性を持つcssセレクターをHTMLタグの親の順序で適用するにはどうすればよいですか?

分類Dev

同じページに同じ属性を持つオブジェクトを一覧表示するにはどうすればよいですか?

分類Dev

同じプロパティを持つオブジェクトを単一の配列にマージするにはどうすればよいですか?

分類Dev

Sequelize JSのreference_id(FK列)で同じ値を持つオブジェクトの配列を更新するにはどうすればよいですか?

分類Dev

私の場合、unordered_multimapで異なるオブジェクトが同じハッシュコード値を持つようにequalメソッドをオーバーロードするにはどうすればよいですか?

分類Dev

オブジェクト内の要素が異なるオブジェクトの2つの配列を比較して、配列をフィルタリングするにはどうすればよいですか?

分類Dev

Android Studioで同じパッケージ名の2つの異なるプロジェクトを作成するにはどうすればよいですか?

分類Dev

javascriptで同じキーを持つオブジェクトからオブジェクト内の配列を持つオブジェクトの配列を作成するにはどうすればよいですか?

分類Dev

同じプロジェクトで2つのrabbitlistenersを異なる方法で構成するにはどうすればよいですか?

分類Dev

結果の配列にのみ表示される一意の値または異なる値のみを持つ2つの複雑なJSONオブジェクトをマージするにはどうすればよいですか?

分類Dev

同じプロパティ値を持つオブジェクトの配列を配置するにはどうすればよいですか?

分類Dev

それらの要素の出現順序に関係なく、2つの配列に同じ要素が含まれているかどうかをSwiftでチェックインするにはどうすればよいですか?

分類Dev

それらの要素の出現順序に関係なく、2つの配列に同じ要素が含まれているかどうかをSwiftでチェックインするにはどうすればよいですか?

分類Dev

format-listと同じ順序でPowerShellオブジェクトのプロパティを取得するにはどうすればよいですか?

分類Dev

変更されていないキーの参照をjavascriptで同じに保ちながら、変更なしで同じ値を持つオブジェクトのキーの値を変更するにはどうすればよいですか?

分類Dev

関数が2つの異なるオブジェクトを迅速に受け入れるようにするにはどうすればよいですか?

Related 関連記事

  1. 1

    2つの2つの要素データセット間で異なるオブジェクトを取得するにはどうすればよいですか?

  2. 2

    順序に関係なく、2つのオブジェクトに同じ単語が含まれているかどうかを確認するにはどうすればよいですか?

  3. 3

    同じタイプに強制せずにPerlで2つのオブジェクトを比較するにはどうすればよいですか?

  4. 4

    一致する要素がある場合、2つの別々のオブジェクト/配列に1つの同じ要素があり、2つのオブジェクトを1つの配列に連結するかどうかを比較するにはどうすればよいですか?Javascript

  5. 5

    同じクラスの2つのオブジェクトを適切に比較するにはどうすればよいですか?

  6. 6

    2つの異なるオブジェクトキーを比較し、キーがJavascriptで同じである場合、その値を更新するにはどうすればよいですか?

  7. 7

    長さが異なるオブジェクトの2つの配列を比較するにはどうすればよいですか?

  8. 8

    2つのオブジェクトから同じ値でオブジェクトを作成するにはどうすればよいですか?

  9. 9

    (異なる長さの)オブジェクトの配列を、元の配列の要素とは異なるプロパティを持つ1つのオブジェクトに変換するにはどうすればよいですか?

  10. 10

    ポリモーフィズムを使用して、同じ基本クラスを持つ異なるオブジェクトを持つunordered_setsに同じ操作を適用するにはどうすればよいですか?

  11. 11

    C#で2つの異なるクラスオブジェクトの同じプロパティを比較するにはどうすればよいですか?

  12. 12

    2つのオブジェクトを比較するにはどうすればよいですか

  13. 13

    Numpyを使用して要素の順序に関係なく、異なる配列で同じ行を見つけるにはどうすればよいですか?

  14. 14

    同じ特異性を持つcssセレクターをHTMLタグの親の順序で適用するにはどうすればよいですか?

  15. 15

    同じページに同じ属性を持つオブジェクトを一覧表示するにはどうすればよいですか?

  16. 16

    同じプロパティを持つオブジェクトを単一の配列にマージするにはどうすればよいですか?

  17. 17

    Sequelize JSのreference_id(FK列)で同じ値を持つオブジェクトの配列を更新するにはどうすればよいですか?

  18. 18

    私の場合、unordered_multimapで異なるオブジェクトが同じハッシュコード値を持つようにequalメソッドをオーバーロードするにはどうすればよいですか?

  19. 19

    オブジェクト内の要素が異なるオブジェクトの2つの配列を比較して、配列をフィルタリングするにはどうすればよいですか?

  20. 20

    Android Studioで同じパッケージ名の2つの異なるプロジェクトを作成するにはどうすればよいですか?

  21. 21

    javascriptで同じキーを持つオブジェクトからオブジェクト内の配列を持つオブジェクトの配列を作成するにはどうすればよいですか?

  22. 22

    同じプロジェクトで2つのrabbitlistenersを異なる方法で構成するにはどうすればよいですか?

  23. 23

    結果の配列にのみ表示される一意の値または異なる値のみを持つ2つの複雑なJSONオブジェクトをマージするにはどうすればよいですか?

  24. 24

    同じプロパティ値を持つオブジェクトの配列を配置するにはどうすればよいですか?

  25. 25

    それらの要素の出現順序に関係なく、2つの配列に同じ要素が含まれているかどうかをSwiftでチェックインするにはどうすればよいですか?

  26. 26

    それらの要素の出現順序に関係なく、2つの配列に同じ要素が含まれているかどうかをSwiftでチェックインするにはどうすればよいですか?

  27. 27

    format-listと同じ順序でPowerShellオブジェクトのプロパティを取得するにはどうすればよいですか?

  28. 28

    変更されていないキーの参照をjavascriptで同じに保ちながら、変更なしで同じ値を持つオブジェクトのキーの値を変更するにはどうすればよいですか?

  29. 29

    関数が2つの異なるオブジェクトを迅速に受け入れるようにするにはどうすればよいですか?

ホットタグ

アーカイブ