Как я могу перебрать этот список в Python - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь пройтись по списку ниже, и мне трудно. Я пытаюсь получить доступ к элементу словаря "метрики". Я пытаюсь распечатать все ключи / значения 'timestamp' и 'values'.

Мне удалось получить доступ к списку с помощью приведенного ниже кода и посмотреть, как я могу по отдельности попасть в список но я не уверен, как собрать al oop, чтобы получить все нужные мне значения.

flat_file = DATA[0]['environments'][0]['dimensions'][0]

[
    {
        "environments": [
            {
                "dimensions": [
                    {
                        "metrics": [
                            {
                                "name": "sum(message_count)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "651.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "510.0"
                                    }
                                ]
                            },
                            {
                                "name": "global-avg-request_size",
                                "values": [
                                    "0.0"
                                ]
                            },
                            {
                                "name": " avg(request_size)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "0.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "0.0"
                                    }
                                ]
                            }
                        ],
                        "name": "TestL"
                    },
                    {
                        "metrics": [
                            {
                                "name": "sum(message_count)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "477.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "338.0"
                                    }
                                ]
                            },
                            {
                                "name": "global-avg-request_size",
                                "values": [
                                    "0.0"
                                ]
                            },
                            {
                                "name": " avg(request_size)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "0.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "0.0"
                                    }
                                ]
                            }
                        ],
                        "name": "test_y"
                    },
                    {
                        "metrics": [
                            {
                                "name": "sum(message_count)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "91.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "93.0"
                                    }
                                ]
                            },
                            {
                                "name": "global-avg-request_size",
                                "values": [
                                    "0.0"
                                ]
                            },
                            {
                                "name": " avg(request_size)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "0.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "0.0"
                                    }
                                ]
                            }
                        ],
                        "name": "Testz"
                    }
                ],
                "name": "prod"
            }
        ],
        "metaData": {
            "errors": [],
            "notices": [
                "query served by: something",
                "Source:db",
                "Table used: something",
                "Metric with Avg of request_size was requested. For this a global avg was also computed with name global-avg-request_size"
            ]
        }
    }
]

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020

Что вы читаете, это JSON, чтобы прочитать его в python вам нужно:

import json

data = '''{
        "environments": [
            {
                "dimensions": [
                    {
                        "metrics": [
                            {
                                "name": "sum(message_count)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "651.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "510.0"
                                    }
                                ]
                            },
                            {
                                "name": "global-avg-request_size",
                                "values": [
                                    "0.0"
                                ]
                            },
                            {
                                "name": " avg(request_size)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "0.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "0.0"
                                    }
                                ]
                            }
                        ],
                        "name": "TestL"
                    },
                    {
                        "metrics": [
                            {
                                "name": "sum(message_count)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "477.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "338.0"
                                    }
                                ]
                            },
                            {
                                "name": "global-avg-request_size",
                                "values": [
                                    "0.0"
                                ]
                            },
                            {
                                "name": " avg(request_size)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "0.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "0.0"
                                    }
                                ]
                            }
                        ],
                        "name": "test_y"
                    },
                    {
                        "metrics": [
                            {
                                "name": "sum(message_count)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "91.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "93.0"
                                    }
                                ]
                            },
                            {
                                "name": "global-avg-request_size",
                                "values": [
                                    "0.0"
                                ]
                            },
                            {
                                "name": " avg(request_size)",
                                "values": [
                                    {
                                        "timestamp": 1582588800000,
                                        "value": "0.0"
                                    },
                                    {
                                        "timestamp": 1582502400000,
                                        "value": "0.0"
                                    }
                                ]
                            }
                        ],
                        "name": "Testz"
                    }
                ],
                "name": "prod"
            }
        ],
        "metaData": {
            "errors": [],
            "notices": [
                "query served by: something",
                "Source:db",
                "Table used: something",
                "Metric with Avg of request_size was requested. For this a global avg was also computed with name global-avg-request_size"
            ]
        }
    }'''

data_dict = json.loads(data)

Это создаст python словарь ваших данных. Так что теперь получайте доступ к данным, как и для словаря.

например: data_dict["environments"]

до go глубже попробуйте комбинацию для:

>>> for doc in data_dict['environments']:
...   for i in doc['dimensions']:
...     print(i['name'])
...
TestL
test_y
Testz

Для лучшего ориентированное на данные представление и использование: используйте Pandas, проверьте эту ссылку и эту

0 голосов
/ 26 февраля 2020
lisp = [
{
    "environments": [
        {
            "dimensions": [
                {
                    "metrics": [
                        {
                            "name": "sum(message_count)",
                            "values": [
                                {
                                    "timestamp": 1582588800000,
                                    "value": "651.0"
                                },
                                {
                                    "timestamp": 1582502400000,
                                    "value": "510.0"
                                }
                            ]
                        },
                        {
                            "name": "global-avg-request_size",
                            "values": [
                                "0.0"
                            ]
                        },
                        {
                            "name": " avg(request_size)",
                            "values": [
                                {
                                    "timestamp": 1582588800000,
                                    "value": "0.0"
                                },
                                {
                                    "timestamp": 1582502400000,
                                    "value": "0.0"
                                }
                            ]
                        }
                    ],
                    "name": "TestL"
                },
                {
                    "metrics": [
                        {
                            "name": "sum(message_count)",
                            "values": [
                                {
                                    "timestamp": 1582588800000,
                                    "value": "477.0"
                                },
                                {
                                    "timestamp": 1582502400000,
                                    "value": "338.0"
                                }
                            ]
                        },
                        {
                            "name": "global-avg-request_size",
                            "values": [
                                "0.0"
                            ]
                        },
                        {
                            "name": " avg(request_size)",
                            "values": [
                                {
                                    "timestamp": 1582588800000,
                                    "value": "0.0"
                                },
                                {
                                    "timestamp": 1582502400000,
                                    "value": "0.0"
                                }
                            ]
                        }
                    ],
                    "name": "test_y"
                },
                {
                    "metrics": [
                        {
                            "name": "sum(message_count)",
                            "values": [
                                {
                                    "timestamp": 1582588800000,
                                    "value": "91.0"
                                },
                                {
                                    "timestamp": 1582502400000,
                                    "value": "93.0"
                                }
                            ]
                        },
                        {
                            "name": "global-avg-request_size",
                            "values": [
                                "0.0"
                            ]
                        },
                        {
                            "name": " avg(request_size)",
                            "values": [
                                {
                                    "timestamp": 1582588800000,
                                    "value": "0.0"
                                },
                                {
                                    "timestamp": 1582502400000,
                                    "value": "0.0"
                                }
                            ]
                        }
                    ],
                    "name": "Testz"
                }
            ],
            "name": "prod"
        }
    ],
    "metaData": {
        "errors": [],
        "notices": [
            "query served by: something",
            "Source:db",
            "Table used: something",
            "Metric with Avg of request_size was requested. For this a global avg was also computed with name global-avg-request_size"
        ]
    }
}
]

for element in lisp[0]['environments'][0]['dimensions']:

    for inner_element in element['metrics']:

        for el in inner_element['values']:

            if type(el) == dict:
                print(el)

{'timestamp': 1582588800000, 'value': '651.0'}
{'timestamp': 1582502400000, 'value': '510.0'}
{'timestamp': 1582588800000, 'value': '0.0'}
{'timestamp': 1582502400000, 'value': '0.0'}
{'timestamp': 1582588800000, 'value': '477.0'}
{'timestamp': 1582502400000, 'value': '338.0'}
{'timestamp': 1582588800000, 'value': '0.0'}
{'timestamp': 1582502400000, 'value': '0.0'}
{'timestamp': 1582588800000, 'value': '91.0'}
{'timestamp': 1582502400000, 'value': '93.0'}
{'timestamp': 1582588800000, 'value': '0.0'}
{'timestamp': 1582502400000, 'value': '0.0'}
0 голосов
/ 26 февраля 2020

Это будет работать:

for i in range(len(l[0]['environments'][0]['dimensions'])):
    for j in range(len(l[0]['environments'][0]['dimensions'][i]['metrics'])):
        if '{' in str(l[0]['environments'][0]['dimensions'][i]['metrics'][j]['values']):
            print(l[0]['environments'][0]['dimensions'][i]['metrics'][j]['values'])

Вывод:

[{'timestamp': 1582588800000, 'value': '651.0'}, {'timestamp': 1582502400000, 'value': '510.0'}]
[{'timestamp': 1582588800000, 'value': '0.0'}, {'timestamp': 1582502400000, 'value': '0.0'}]
[{'timestamp': 1582588800000, 'value': '477.0'}, {'timestamp': 1582502400000, 'value': '338.0'}]
[{'timestamp': 1582588800000, 'value': '0.0'}, {'timestamp': 1582502400000, 'value': '0.0'}]
[{'timestamp': 1582588800000, 'value': '91.0'}, {'timestamp': 1582502400000, 'value': '93.0'}]
[{'timestamp': 1582588800000, 'value': '0.0'}, {'timestamp': 1582502400000, 'value': '0.0'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...