1

辞書のリストを返す2つの関数があり、jsonにエンコードさせようとしています。最初の関数で実行しようとすると機能しますが、構文エラーが.の2番目の関数を追加しています": expected"。最終的には、それぞれがdictのリストを出力する合計7つの関数を追加します。これを達成するためのより良い方法はありますか?

import dmidecode
import simplejson as json

def get_bios_specs():
    BIOSdict = {}
    BIOSlist = []
    for v in dmidecode.bios().values():
        if type(v) == dict and v['dmi_type'] == 0:
            BIOSdict["Name"] = str((v['data']['Vendor']))
            BIOSdict["Description"] = str((v['data']['Vendor']))
            BIOSdict["BuildNumber"] = str((v['data']['Version']))
            BIOSdict["SoftwareElementID"] = str((v['data']['BIOS Revision']))
            BIOSdict["primaryBIOS"] = "True"

            BIOSlist.append(BIOSdict)
    return BIOSlist

def get_board_specs():
    MOBOdict = {}
    MOBOlist = []
    for v in dmidecode.baseboard().values():
        if type(v) == dict and v['dmi_type'] == 2:
           MOBOdict["Manufacturer"] =  str(v['data']['Manufacturer'])
           MOBOdict["Model"] = str(v['data']['Product Name'])

           MOBOlist.append(MOBOdict)
    return MOBOlist


def get_json_dumps():
    jsonOBJ = json

    #Syntax error is here, i can't use comma to continue adding more, nor + to append.
    return  jsonOBJ.dumps({'HardwareSpec':{'BIOS': get_bios_specs()},{'Motherboard': get_board_specs()}})
4

2 に答える 2

1

ネストされた辞書内で複数の項目を使用します。

jsonOBJ.dumps({
    'HardwareSpec': {
        'BIOS': get_bios_specs(),
        'Motherboard': get_board_specs()
     }
})

複数のBIOSアイテムが必要な場合Motherboardは、リストを使用してください。

...
     'HardwareSpec': {
        'BIOS': [
            get_bios_specs(),
            get_uefi_specs()
        ]
        ...
     }
于 2012-12-13T06:24:14.297 に答える
1

仕様のより便利なルックアップが必要な場合は、dict を埋め込むだけです。

jsonOBJ.dumps({'HardwareSpec':{'BIOS': get_bios_specs(), 
  'Motherboard': get_board_specs()
  }
})
于 2012-12-13T06:33:28.897 に答える