сравнить значения из 2-х вложенных словарей в python - PullRequest
1 голос
/ 25 марта 2019

Я ищу предложения по лучшему подходу при сравнении файлов json с использованием python3 и выводе соответствующего ключа, пар значений

Я написал скрипт python для циклического прохождения данных json, полученных через несколько запросов API, а затем для создания 2 новых файлов json с вложенными словарями и списками. 2 вывода json, которые я создал, в основном содержат информацию об «объектах», относящихся к двум разным «проектам» - в первую очередь об Именах объектов и Идентификаторах объектов. Произвольный вывод json / list вложенных словарей, как правило, будет выглядеть примерно так:

projectA:[
        {dashboardName: "v1",
        dashboardID: "v2",
        dashbTabs:[
            {dashTabName: "v3",
            dashTabID; "v4",
            reports:[
                {reportName: "v5",
                reportID: "v6",
                metrics:[
                    {metricName: "v7",
                    metricID: "v8"
                    },
                    {metricName:v9",
                    metricID: "v10"...

и т. Д. Для нескольких метрик, отчетов и панелей мониторинга

Теперь, когда у меня есть вышеуказанные выходные данные json для каждого из 2 проектов, мне нужно выяснить, совпадают ли какие-либо идентификаторы в projectA с идентификаторами в projectB. Если это так, мне нужно знать «путь» объектов с соответствующими идентификаторами.

Хотя помощь с кодом была бы очень признательна (я не беглый программист), я ищу предложения о подходе для достижения этой цели. Сначала я рассмотрел выравнивание файлов, чтобы получить список всех идентификаторов и их пути, а затем провел сравнение идентификаторов. Или, в качестве альтернативы, можно просмотреть все идентификаторы в projectB и проверить соответствие идентификаторов в projectA. Или, возможно, есть лучший / более быстрый способ сделать это?

Я думаю, что вывод в формате csv будет иметь смысл, когда у меня есть один столбец с «путем» из projectA и другой столбец с путем из projectB, например,

col1                                           col2  
dashboardName:v1/dashTabName:v3/reportName:v5  dashboardName:v1

Обратите внимание, что в этом примере это будет dashboardID в projectB, который совпадает с reportID в projectA

...