13

Python リストを {"mpn":"list_value"} オブジェクトの JSON 配列に変換する関数を作成しようとしています。ここで、「mpn」はすべてのオブジェクトに必要なリテラル文字列値ですが、「list_value」は値ですパイソンリストから。この関数の出力を 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)

この現在の関数は機能しておらず、すべての JSON オブジェクトの Python リストの最後の値を返します。

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

ただし、もちろん、オブジェクト内の一意のリスト値を返す関数が必要です。

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

要するに、この関数が機能しない理由がわかりません。単一の {key:value} ペアを持つ辞書を python リストに追加できると思っていましたが、すべての辞書が独立しているため、すべての辞書が同じキーを持っていても問題ありません。ご協力いただきありがとうございます。

4

3 に答える 3

31

まったく同じ辞書をリストに追加しています。リスト内の各項目に対して新しい辞書を作成する必要があります。

json.dumps([dict(mpn=pn) for pn in lst])
于 2012-07-03T14:12:45.080 に答える
11

他の人が(回答で)説明したように、常に同じ辞書を参照するリストの各項目に対して新しい辞書を作成する必要があります

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)

印刷する

[{"mpn": "ECA-1EHG102"}, {"mpn": "CL05B103KB5NNNC"}, {"mpn": "CC0402KRX5R8BB104"}]
于 2012-07-03T14:24:32.783 に答える