我有一个有许多子节点的plist。我似乎无法找到一种深入访问这些节点的方法,只能获取该层。所以下面,我想获得测试人员编号。我可以打电话
plist['Title']['Set']['Notes']['Tester']
但这会给我所有测试人员密钥以及密钥' Param'和字符串' WUT'。我需要索引所有这些(并且有很多),它们因文件而异。
<key>Title</key>
<dict>
<key>Set</key>
<dict>
<key>Notes</key>
<dict>
<key>Tester</key>
<array>
<dict>
<key>13</key>
<dict>
<key>Param</key>
<array>
<string>WUT</string>
</array>
</dict>
</dict>
<dict>
<key>82</key>
<dict>
<key>Param</key>
<array>
<string>WUT</string>
</array>
</dict>
</dict>
<dict>
<key>64</key>
<dict>
<key>Param</key>
<array>
<string>WUT</string>
</array>
</dict>
</dict>
理想情况下,我想在数组中获取值[13,82,64]。
作为附注,我知道我可以通过xml.etree.ElementTree库执行此操作并运行
plist[0][11][3][1][2][1][x][0].text
并使用for循环运行,但对于我目前正在做的事情,plist包更容易使用。
答案 0 :(得分:1)
你非常接近。您可以使用dict.keys()
方法获取这些测试人员密钥。
tester_keys = list(plist['Title']['Set']['Notes']['Tester'].keys())
dict.keys()
返回包含字典中键的序列(在您的情况下为数字)。然后使用list()
将此序列转换为列表。