Python 从多个列表创建json文件的更好方法?

Python 从多个列表创建json文件的更好方法?,python,json,Python,Json,我有三个列表,如下所示,我想从中创建一个JSON文件: devices = ['iphone', 'ipad', 'ipod', 'watch'], cities = ['NY', 'SFO', 'LA', 'NJ'], companies = ['Apple', 'Samsung', 'Walmart'] 我做了如下的事情 首先手动创建字典: data = { 'devices': ['iphone', 'ipad', 'ipod', 'watch'], 'cities':

我有三个
列表,如下所示,我想从中创建一个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
number个
list
s,我希望创建一个JSON格式的文件,只需最少的手工工作。

此方法适用于任何数量的列表,只要它们的格式与问题中提供的格式相同。希望这有帮助

# 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)

您的问题并没有显示如何像从另一个.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
文件的内容:

{
“设备”:[
“iphone”,
“ipad”,
“ipod”,
“手表”
],
“城市”:[
“纽约”,
“证券及期货条例”,
“洛杉矶”,
“NJ”
],
“公司”:[
“苹果”,
“三星”,
“沃尔玛”
]
}

这里的手工工作是什么?这些列表来自哪里?@Selcuk I将在
python
文件中提供这些列表。您可以导入该python文件(例如,
import-input\u-lists
,如果文件名为
input\u-lists.py
),并使用
dir(input\u-lists)
获取属性名称列表。然后,它变成了一个遍历该列表并消除内置属性(那些以
\uuu
开头和结尾的属性)的问题。我得到
语法错误或无效语法
附近
数据={listname:globals()[listname]用于列表中的listname}
Python2.6
Python2.7
及以上版本中,没有error@User12345:如果您想要的不是当前版本的Python(我相信是v3.6.5),那么您应该在中提到它,并为该版本的问题添加标签。这可能是由于使用了字典显示(通常也称为字典理解),这是该行中正在发生的事情——我不确定它们是何时添加的,但它们已经在2.7.x中出现了一段时间。无论如何,您应该能够用几行代码来替换它,这些代码使用常规的
for
循环来填充(构建)该字典,这将为您提供一些可以对所有字典都起作用的东西。