如何解析一个plist?

How to parse a plist?

我正在尝试解析下面的 plist pl,我能够解析 ["IOKitPersonalities"]["UART"]["ProductFWMapping"] 中的键,但是无法打印相应的 Firmware 值和 运行 进入以下错误?如何打印所有固件值,下面还有预期的输出?

pl = {'IOKitPersonalities': {'UART': {'ProductFWMapping': {'D321': {'Firmware': 'C-4377__s-B2/aladdink.trx'}, 'J318': {'Firmware': 'C-4377__s-B2/monstrob.trx'}, 'D331': {'Firmware': 'C-4377__s-B2/geniek.trx'}}}}, 'NSHumanReadableCopyright': u'Copyright \xa9 2013 Company Inc. All rights reserved.'}


for hw in pl["IOKitPersonalities"]["UART"]["ProductFWMapping"]:
    print hw

for hw in pl["IOKitPersonalities"]["UART"]["ProductFWMapping"]:
    print hw['Firmware']

错误:-

    print hw['Firmware']
TypeError: string indices must be integers, not str

预期输出:-

['D321','J318','D331']

['C-4377__s-B2/aladdink.trx','C-4377__s-B2/monstrob.trx','C-4377__s-B2/geniek.trx']

硬件只是关键。应该是

for hw in pl["IOKitPersonalities"]["UART"]["ProductFWMapping"]:
    print pl["IOKitPersonalities"]["UART"]["ProductFWMapping"][hw]['Firmware']