在Python中,是否有方法从绑定在列表类型中的嵌套字典中获取值
我有这样的输出在Python中,是否有方法从绑定在列表类型中的嵌套字典中获取值,python,dictionary,Python,Dictionary,我有这样的输出 >>> print output [{u'MachineId': u'0', u'Stdout': u'{"version":"2.1-beta2.1-xenial-amd64","url":"file:///tmp/juju-tools137740170/tools/released/juju-2.1-beta2-xenial-amd64.tgz","sha256":"70a1ec4e9d194f71506b9b2944357335d3dbe5386e
>>> print output
[{u'MachineId': u'0', u'Stdout': u'{"version":"2.1-beta2.1-xenial-amd64","url":"file:///tmp/juju-tools137740170/tools/released/juju-2.1-beta2-xenial-amd64.tgz","sha256":"70a1ec4e9d194f71506b9b2944357335d3dbe5386e7797de3ed71c12092ba774","size":24537713}'}]
>>> type (output)
<type 'list'>
>>> print output[0]
{u'MachineId': u'0', u'Stdout': u'{"version":"2.1-beta2.1-xenial-amd64","url":"file:///tmp/juju-tools137740170/tools/released/juju-2.1-beta2-xenial-amd64.tgz","sha256":"70a1ec4e9d194f71506b9b2944357335d3dbe5386e7797de3ed71c12092ba774","size":24537713}'}
>>>
>>> type (output[0])
<type 'dict'>
打印输出
[{u'MachineId':u'0',u'Stdout':u'{“版本”:“2.1-beta2.1-xenial-amd64”,“url”:”file:///tmp/juju-tools137740170/tools/released/juju-2.1-beta2-xenial-amd64.tgz,“sha256”:“70A1EC4E9D194F71506B9B29443573335D3DBE5386E7797DE3ED71C12092BA774”,“大小:24537713}]
>>>类型(输出)
>>>打印输出[0]
{u'MachineId':u'0',u'Stdout':u'{“版本”:“2.1-beta2.1-xenial-amd64”,“url”:”file:///tmp/juju-tools137740170/tools/released/juju-2.1-beta2-xenial-amd64.tgz,“sha256”:“70A1EC4E9D194F71506B9B29443573335D3DBE5386E7797DE3ED71C12092BA774”,“大小:24537713}”
>>>
>>>类型(输出[0])
在这里,我想从输出[0]和标准输出dict的字典中获取sha256值;
让我知道是否有一种直接的方法可以在Python中获取该值,而不是迭代
如果我试图直接访问它们,就会得到“TypeError:字符串索引必须是整数”
>>> print output[0]['Stdout']['sha256']
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: string indices must be integers
>>打印输出[0]['Stdout']['sha256']
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:字符串索引必须是整数
您可以通过将Stdout
字符串转换为json来获取sha256值,例如:
import json
print json.loads(output[0]['Stdout'])['sha256']
您的
Stdout
是另一个JSON字符串,您必须先对其进行解码,然后才能使用带有'sha245'
键的字典。@MartijnPieters告诉我如何从输出中获取sha256的值。这里有什么问题吗?如果结构和键名保持不变,则可以使用输出[0]['Stdout']['sha256']
@MayurBuragohain轻松获取;我尝试了它,得到了以下错误>>>打印输出[0]['Stdout']['sha256']回溯(最近一次调用):文件“”,第1行,在TypeError:字符串索引必须是整数为什么对这个问题使用-4的否定注释?是我问错了吗:(为什么需要json.loads?从这个问题来看,很明显输出和输出[0]分别是list和dict。@MayurBuragohain,请参阅Marty Pieters的评论,根据Viswesn Stdout报告的错误,它是一个json字符串而不是一个字典,