我有一个名为“hostnames”的JSON文件,格式如下
{
'propertyName': 'www.property1.com',
'propertyVersion': 1,
'etag': 'jbcas6764023nklf78354',
'rules': {
'name': 'default',
'children': [{
'name': 'Route',
'children': [],
'behaviors': [{
'name': 'origin',
'options': {
'originType': 'CUSTOMER',
'hostname': 'www.origin1.com',
我想获取键“propertyName”和“hostname”的值,并创建一个如下所示的新JSON文件
'properties': [{
'propertyName': 'www.property1.com',
'hostnames': ['www.origin1.com', 'www.origin2.com']
}, {
'propertyName': 'www.property1.com',
'hostnames': ['www.origin1.com', 'www.origin2.com']
}]
我的代码如下所示
hostnames = result.json()
hostnameslist = [host['hostname'] for host in hostnames['rules']['children']['behaviors']['options']]
print(hostnameslist)
但我得到了错误
TypeError: list indices must be integers or slices, not str
2条答案
按热度按时间anauzrmj1#
您正在尝试访问具有字符串索引('behaviors ')的列表元素。请尝试:
yfjy0ee72#
假设OP的数据可能是如何结构化的。
递归导航字典以查找与字典键"hostname"关联的所有/任何值似乎非常适合这里。
这样做就不需要了解字典的深度,甚至不需要了解字典中除"hostname"(显然)之外的任何键名。
当然,在"master"字典中可能有其他字典包含"hostname"键,如果是这种情况,那么这个函数可能返回不需要的值。