Python 如何将JSON元素从字符串转换为数组

Python 如何将JSON元素从字符串转换为数组,python,arrays,json,list,Python,Arrays,Json,List,我正在将.csv转换为JSON,但字符串不是数组形式,我需要它们位于数组中 我用于将.csv转换为JSON的代码: def导入_密码(self): options=QFileDialog.options() 文件名,QFileDialog.getOpenFileName(self,“密码”,“密码”,“Excel文件(*.csv)”,选项=选项) 如果文件名为: 打印(文件名) csvfile=open(文件名'r') jsonfile=open(password\u dir+'password

我正在将.csv转换为JSON,但字符串不是数组形式,我需要它们位于数组中

我用于将.csv转换为JSON的代码:

def导入_密码(self):
options=QFileDialog.options()
文件名,QFileDialog.getOpenFileName(self,“密码”,“密码”,“Excel文件(*.csv)”,选项=选项)
如果文件名为:
打印(文件名)
csvfile=open(文件名'r')
jsonfile=open(password\u dir+'passwords.json','w')
字段名=(“站点名”、“用户名”、“密码”)
reader=csv.DictReader(csvfile,字段名)
out=json.dumps([读卡器中的行对应行])
#out=out。替换(“\\”,“”)
#jsonfile.write(out)
#打开(password_dir+'passwords.json',mode='w+',encoding='utf-8')作为文件:
#dump(输出,文件)
#打开(password_dir+'passwords.json')作为文件:
密码\u json=json.loads(out)
#对json文件排序
已排序的\u obj=sorted(密码\u json,key=lambda x:x['site name'],反向=False)
#写入密码文件
打开(password_dir+'passwords.json',mode='w+',encoding='utf-8')作为文件:
dump(排序对象,文件,确保ascii=True,缩进=4,排序键=True,分隔符=(',',':'))
我不知道如何有效地转换它们

我得到的是:

[
    {
        "password": "asd",
        "site name": "asd",
        "username": "asd"
    },
    {
        "password": "asd",
        "site name": "asdasd",
        "username": "asd"
    },
    {
        "password": "asd",
        "site name": "asdasdasd",
        "username": "asd"
    }
]
我想要的是:

[
    {
        "password": ["asd"],
        "site name": ["asd"],
        "username": ["asd"]
    },
    {
        "password": ["asd"],
        "site name": ["asdasd"],
        "username": ["asd"]
    },
    {
        "password": ["asd"],
        "site name": ["asdasdasd"],
        "username": ["asd"]
    }
]
我得到as字符串,我想要数组。

您可以这样做:

data = [
    {
        "password": "asd",
        "site name": "asd",
        "username": "asd"
    },
    {
        "password": "asd",
        "site name": "asdasd",
        "username": "asd"
    },
    {
        "password": "asd",
        "site name": "asdasdasd",
        "username": "asd"
    }
]


for dic in data:
    for key in dic.keys():
        dic[key] = [dic[key]]
或使用列表理解:

data = [{k: [v] for k,v in d.items()} for d in data]
输出:

[{'password': ['asd'], 'site name': ['asd'], 'username': ['asd']}, {'password': ['asd'], 'site name': ['asdasd'], 'username': ['asd']}, {'password': ['asd'], 'site name': ['asdasdasd'], 'username': ['asd']}]
你可以这样做:

data = [
    {
        "password": "asd",
        "site name": "asd",
        "username": "asd"
    },
    {
        "password": "asd",
        "site name": "asdasd",
        "username": "asd"
    },
    {
        "password": "asd",
        "site name": "asdasdasd",
        "username": "asd"
    }
]


for dic in data:
    for key in dic.keys():
        dic[key] = [dic[key]]
或使用列表理解:

data = [{k: [v] for k,v in d.items()} for d in data]
输出:

[{'password': ['asd'], 'site name': ['asd'], 'username': ['asd']}, {'password': ['asd'], 'site name': ['asdasd'], 'username': ['asd']}, {'password': ['asd'], 'site name': ['asdasdasd'], 'username': ['asd']}]