我正在尝试编写一个函数来将python列表转换为{"mpn":"list_value"}对象的JSON数组,其中"mpn"是我需要的每个对象的文字字符串值,但"list_value"是值来自python列表.我将使用此函数的输出来获取API get请求.
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)
Run Code Online (Sandbox Code Playgroud)
此当前函数不起作用,并返回所有JSON对象的python列表中的最后一个值:
>[{"mpn":"CC0402KRX5R8BB104"},{"mpn":"CC0402KRX5R8BB104"},{"mpn":"CC0402KRX5R8BB104"}]
Run Code Online (Sandbox Code Playgroud)
但是,当然我需要我的函数来返回对象中的唯一列表值:
>[{"mpn":"ECA-1EHG102"},{"mpn":"CL05B103KB5NNNC"},{"mpn":"CC0402KRX5R8BB104"}]
Run Code Online (Sandbox Code Playgroud)
底线是我不明白为什么这个功能不起作用.我希望我可以将一个带有单个{key:value}对的字典附加到python列表中,并且所有字典都具有相同的密钥并不重要,因为它们是独立的.谢谢你的帮助.
jfs*_*jfs 31
您正在向列表中添加完全相同的字典.您应该为列表中的每个项目创建一个新字典:
json.dumps([dict(mpn=pn) for pn in lst])
Run Code Online (Sandbox Code Playgroud)
Xav*_*lle 10
正如其他人(在答案中)所解释的那样,你应该为列表中的每个项目创建一个新的字典,你总是引用相同的字典
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)
Run Code Online (Sandbox Code Playgroud)
打印
[{"mpn": "ECA-1EHG102"}, {"mpn": "CL05B103KB5NNNC"}, {"mpn": "CC0402KRX5R8BB104"}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60507 次 |
| 最近记录: |