9

2 つの配列を持つ JSON オブジェクトがあります。1 つのkeys配列と 1 つのvalues配列で、どちらも同じ長さです。jmespath を使用して、PHPのようにkeys、配列の値をキーとして、配列の値を値として使用して、新しいオブジェクトを構築したいと考えています。valuesarray_combine

たとえば、入力は次のとおりです。

{
    "keys": [
        "a",
        "b",
        "c"
    ],
    "values": [
        1,
        2,
        3
    ]
}

そして、ここに私が期待している出力があります:

{
    "a": 1,
    "b": 2,
    "c": 3
}

これを達成するための組み込み関数はありますか?

4

2 に答える 2

4

残念ながら、これはまだ不可能のようです。

Github の問題: jmespath.py#152 — ( Python 実装のリポジトリにあります)

この github プル リクエストの仕様には、提案された(!)zip関数と関数が必要です。from_items

于 2018-08-25T11:21:47.693 に答える
-1

jmespathは、JSON ファイルを解析/クエリするための一般的なライブラリです。http://jmespath.org/tutorial.htmlのその他の例

以下のコードで

  • js は提供された json コンテンツです
  • jp.search('keys',json.loads(js)) はリストを生成します: [u'a', u'b', u'c']
  • jp.search('values',json.loads(js)) はリストを生成します: [1, 2, 3]
  • zipは 2 つのリストを結合し、dict()はタプルを辞書に変換します

    import json
    import jmespath
    
    js = '''{
            "keys": [
                    "a",
                    "b",
                    "c"
                    ],
            "values": [
                    1,
                    2,
                    3
                      ]
            }'''
    
    print (dict(zip(jp.search('keys',json.loads(js)),jp.search('values',json.loads(js)))))
    

    出力: {u'a': 1, u'c': 3, u'b': 2}

于 2016-04-20T21:30:50.150 に答える