Python: Convert a list of python dictionaries to an array of JSON objects

匿名 (未验证) 提交于 2019-12-03 02:51:02

问题:

I'm trying to write a function to convert a python list into a JSON array of {"mpn":"list_value"} objects, where "mpn" is the literal string value I need for every object but "list_value" is the value from the python list. I'll use the output of this function for an API get request.

part_nums = ['ECA-1EHG102','CL05B103KB5NNNC','CC0402KRX5R8BB104']  def json_list(list):     lst = []     d = {}     for pn in list:         d['mpn']=pn         lst.append(d)     return json.dumps(lst, separators=(',',':'))  print json_list(part_nums) 

This current function is not working and returns last value in the python list for all JSON objects:

>[{"mpn":"CC0402KRX5R8BB104"},{"mpn":"CC0402KRX5R8BB104"},{"mpn":"CC0402KRX5R8BB104"}] 

However, of course I need my function to return the unique list values in the objects as such:

>[{"mpn":"ECA-1EHG102"},{"mpn":"CL05B103KB5NNNC"},{"mpn":"CC0402KRX5R8BB104"}] 

Bottom line is I don't understand why this function isn't working. I expected I could append a dictionary with a single {key:value} pair to a python list and it wouldn't matter that all of the dictionaries have the same key because they would be independent. Thanks for your help.

回答1:

You are adding the exact same dictionary to the list. You should create a new dictionary for each item in the list:

json.dumps([dict(mpn=pn) for pn in lst]) 


回答2:

As explained by others (in answers) you should create a new dictionary for each item on the list elsewhere you reference always the same dictionary

import json part_nums = ['ECA-1EHG102','CL05B103KB5NNNC','CC0402KRX5R8BB104']  def json_list(list):     lst = []     for pn in list:         d = {}         d['mpn']=pn         lst.append(d)     return json.dumps(lst)  print json_list(part_nums) 

print

[{"mpn": "ECA-1EHG102"}, {"mpn": "CL05B103KB5NNNC"}, {"mpn": "CC0402KRX5R8BB104"}] 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!