将数据访问到词典列表 python

Access data into list of dictionaries python

我有一个字典列表,里面有一些嵌套的字典:

[{'id': '67569006',
'kind': 'analytics#accountSummary',
'name': 'Adopt-a-Hydrant',
'webProperties': [{'id': 'UA-62536006-1',
                 'internalWebPropertyId': '102299473',
                 'kind': 'analytics#webPropertySummary',
                 'level': 'STANDARD',
                 'name': 'Adopt-a-Hydrant',
                 'profiles': [{'id': '107292146',
                               'kind': 'analytics#profileSummary',
                               'name': 'Adopt a Hydrant view1',
                               'type': 'WEB'},
                              {'id': '1372982608',
                               'kind': 'analytics#profileSummary',
                               'name': 'Unfiltered view',
                               'type': 'WEB'}],
                 'websiteUrl': 'https://example1.com/'}]},
{'id': '44824959',
'kind': 'analytics#accountSummary',
'name': 'Adorn',
'webProperties': [{'id': 'UA-62536006-1',
                 'internalWebPropertyId': '75233390',
                 'kind': 'analytics#webPropertySummary',
                 'level': 'STANDARD',
                 'name': 'Website 2',
                 'profiles': [{'id': '77736192',
                               'kind': 'analytics#profileSummary',
                               'name': 'All Web Site Data',
                               'type': 'WEB'}],
                 'websiteUrl': 'http://www.example2.com'}]},
]

我正在尝试打印网站名称、url 和视图,如果该网站有 2 个或更多视图,请将它们全部打印出来,这就是它变得棘手的地方。

到目前为止我已经尝试过:

all_properties = [The list above]
for single_property in all_properties:
    single_propery_name=single_property['name']
    view_name=single_property['webProperties'][0]['profiles'][0]['name']
    view_id=single_property['webProperties'][0]['profiles'][0]['id']
    print(single_propery_name, view_name, view_id)

这几乎可以工作,但它只打印每个 属性 的第一个视图 profile>name,但是一些属性有多个视图,我还需要这些视图才能打印出来。

现在的输出是:

Adopt-a-Hydrant Adopt a Hydrant view1 107292146
Website 2 All Web Site Data 77736192

所以它跳过了第一个 属性 的第二个视图。我尝试嵌套一个 sub for 循环但我无法让它工作,最终输出应该是:

Adopt-a-Hydrant Adopt a Hydrant view1 107292146
Adopt-a-Hydrant Unfiltered View 1372982608
Website 2 All Web Site Data 77736192

关于如何获得它的任何想法?

您需要遍历每个 single_property:

的配置文件列表
for single_property in all_properties:
    single_property_name = single_property['name']
    for profile in single_property['webProperties'][0]['profiles']:
            view_name = profile['name']
            view_id = profile['id']
            print(single_property_name, view_name, view_id)

如果您在 python docs 中阅读一些关于列表以及如何遍历它们的内容,这可能会有所帮助

只是另一个带有单行循环的命题:

for single_property in data:
   single_propery_name=single_property['name']
   view_name = [i['name'] for i in single_property['webProperties'][0]['profiles']]
   view_id = [i['id'] for i in single_property['webProperties'][0]['profiles']]
   print(single_propery_name, view_name, view_id)

重点是您必须在列表中循环。如果您认为您的数据更易于管理,您也可以创建对象。

如果您真的感到困惑,请不要害怕直接创建变量。

看看这可读性如何:

for item in data:
    webProperties = item['webProperties'][0]
    print("Name: " + webProperties["name"])
    print("URL: " + webProperties["websiteUrl"])
    print("PRINTING VIEWS\n")
    print("----------------------------")
    views = webProperties['profiles']
    for view in views:
        print("ID: " + view['id'])
        print("Kind: " + view['kind'])
        print("Name: " + view['name'])
        print("Type: " + view['type'])
    print("----------------------------")
    print("\n\n\n")

数据定义为您提供给我们的信息:

data = [{'id': '67569006',
'kind': 'analytics#accountSummary',
'name': 'Adopt-a-Hydrant',
'webProperties': [{'id': 'UA-62536006-1',
                 'internalWebPropertyId': '102299473',
                 'kind': 'analytics#webPropertySummary',
                 'level': 'STANDARD',
                 'name': 'Adopt-a-Hydrant',
                 'profiles': [{'id': '107292146',
                               'kind': 'analytics#profileSummary',
                               'name': 'Adopt a Hydrant view1',
                               'type': 'WEB'},
                              {'id': '1372982608',
                               'kind': 'analytics#profileSummary',
                               'name': 'Unfiltered view',
                               'type': 'WEB'}],
                 'websiteUrl': 'https://example1.com/'}]},
{'id': '44824959',
'kind': 'analytics#accountSummary',
'name': 'Adorn',
'webProperties': [{'id': 'UA-62536006-1',
                 'internalWebPropertyId': '75233390',
                 'kind': 'analytics#webPropertySummary',
                 'level': 'STANDARD',
                 'name': 'Website 2',
                 'profiles': [{'id': '77736192',
                               'kind': 'analytics#profileSummary',
                               'name': 'All Web Site Data',
                               'type': 'WEB'}],
                 'websiteUrl': 'http://www.example2.com'}]},
]