回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在执行一个get请求(json输出):</p>
<pre><code>url = "https://"+user+":"+api+"@api.softlayer.com/rest/v3.1/SoftLayer_Virtual_Guest/"+id+"/getSoftwareComponents"
querystring = {"objectMask":"mask[passwords]"}
headers = {
'cache-control': "no-cache"
}
response = requests.get( url, headers=headers, params=querystring)
pwdata = response.json()
print (json.dumps(pwdata, indent=2))
</code></pre>
<p>输出:</p>
<pre><code>[
{
"manufacturerLicenseInstance": "",
"passwords": [
{
"username": "test",
"modifyDate": "2018-05-11T21:52:54+09:00",
"softwareId": 36440389,
"id": 38400901,
"port": null,
"password": "xxxxxxxx",
"createDate": "2018-05-11T21:52:54+09:00",
"software": null
}
],
"hardwareId": null,
"id": 36440389
},
{
"manufacturerLicenseInstance": "",
"passwords": [
{
"username": "nabe",
"modifyDate": "2018-05-11T21:52:54+09:00",
"softwareId": 36440391,
"id": 38402045,
"port": null,
"password": "xxxxxxx",
"createDate": "2018-05-11T21:52:54+09:00",
"software": null
}
],
"hardwareId": null,
"id": 36440391
}
]
</code></pre>
<p>从上面的输出中,我尝试用以下方法过滤<code>id</code>中的<code>passwords[]</code>值:</p>
<p><code>pwdid = [pwd['id'] for pwd in pwdata['passwords']]</code></p>
<p>或者</p>
<p><code>pwdid = pwdata['passwords'][4]['id']</code></p>
<p>它们都给出了<code>list indices must be integers, not str</code>错误</p>
<p>显然,我使用list<code>pwd['id']</code>的方式有些不正确。你知道吗</p>