bugfix> python > 投稿

私は3つの list を持っています 以下のようなもので、それらからJSONファイルを作成したい:

devices = ['iphone', 'ipad', 'ipod', 'watch'],
cities = ['NY', 'SFO', 'LA', 'NJ'],
companies = ['Apple', 'Samsung', 'Walmart']

以下のようにしました。

まず、辞書を手動で作成します。

data = {
    'devices': ['iphone', 'ipad', 'ipod', 'watch'],
    'cities': ['NY', 'SFO', 'LA', 'NJ'],
    'companies': ['Apple', 'Samsung', 'Walmart']
}

次に、次のようにJSON形式に変換します。

import json
with open('abc.json', 'w') as outfile:
    json.dump(data, outfile, indent=4)

より多くのリストがある場合、これを行うより良い方法はありますか。

理想的には、 N があれば list の数 s、最小限の手作業でJSON形式のファイルを作成したい。

回答 2 件
  • あなたの質問は、 list の取得を示していません sは別の.pyファイルのような外部ソースから取得します。そのため、以下に示すように変数がインラインで定義されている場合に変数名を指定して実行する方法を次に示します。

    import json
    devices = ['iphone', 'ipad', 'ipod', 'watch']
    cities = ['NY', 'SFO', 'LA', 'NJ']
    companies = ['Apple', 'Samsung', 'Walmart']
    lists = ['devices', 'cities', 'companies']
    data = {listname: globals()[listname] for listname in lists}
    with open('abc.json', 'w') as outfile:
        json.dump(data, outfile, indent=4)
    
    

    abc.json の内容  作成するファイル:

    {
        "devices": [
            "iphone",
            "ipad",
            "ipod",
            "watch"
        ],
        "cities": [
            "NY",
            "SFO",
            "LA",
            "NJ"
        ],
        "companies": [
            "Apple",
            "Samsung",
            "Walmart"
        ]
    }
    
    

  • このメソッドは、質問で提供されたものと同じ形式を持っている限り、任意の数のリストに対して機能します。お役に立てれば。

    # define the list vars
    devices = ['iphone', 'ipad', 'ipod', 'watch'],
    cities = ['NY', 'SFO', 'LA', 'NJ'],
    companies = ['Apple', 'Samsung', 'Walmart']
    # get the variables into a big list
    v = locals()['In'][2]
    output = {}
    #break down the lists and turn them into dict entries
    v1 = v.split(',\n')
    for each in v1:
        #print(each)
        name = each.split(' = ')[0]
        data = each.split(' = ')[1]
        data = data[2:-2]
        datalist = data.split("', '")
        output[name] = datalist
    #show the output
    output
    #export as JSON
    import json
    with open('C:\\abc.json', 'w') as outfile:
        json.dump(output, outfile, indent=4)
    
    

あなたの答え