Как сравнить значение нескольких ключей в одном файле JSON с помощью python

#python #json #python-3.x #python-2.7

#python #json #python-3.x #python-2.7

Вопрос:

У меня есть образец файла JSON:

 "client_info": [
        {
            "Id": "00201",
            "Information": {
                "Name": "John",
                "Age": 12
            },
            "Address": [
                {         
                    "country": USA,
                    "location": [
                        {
                            "ad1": "NY"                          
                        },
                        {
                            "ad1": "FL"                          
                        },
                    ]
                }
            ]
        },
        {
            "Id": "00202",
            "Information": {
                "Name": "John",
                "Age": 13
            },
            "Address": [
                { 
                    "country": CA,
                    "location": [
                        {
                            "ad1": "NY"                          
                        },
                        {
                            "ad1": "FL"                          
                        },
                    ]
                }
            ]
        },
{
            "Id": "00203",
            "Information": {
                "Name": "John",
                "Age": 13
            },
            "Address": [
                {
                    "country": CA,
                    "location": [
                        {
                            "ad1": "NY"                          
                        }
                    ]
                }
            ]
        }
    ]
  

Здесь мне нужно сравнить информацию.Имя, местоположение.ad1 вместе для каждой записи. Например: идентификатор 00201 — John, NY, FL равен идентификатору 00202, но идентификатор 00203 отличается, поскольку имеет только «ad1»: «NY» . В основном нужно сравнивать как набор.
Я могу создать файл CSV, но моя проблема заключается в том, чтобы создать соответствующий результирующий набор. Я попробовал приведенный ниже код для создания соответствующего результирующего набора, но не смог правильно заполнить набор:

 uniqueNameSet = set()
uniquelocationSet = set()
        for i,client in enumerate(json_data["client_info"]):
            if client["Information"]['Name'] not in uniqueNameSet :
                uniqueNameSet.add(client["Information"]['Name'])        
            else:
                for j in range(len(client["Address"][0]['location'])):
                    if client["Address"][0]['location'][j]['ad1'] not in uniquelocationSet : 
                        uniquelocationSet.add(client["Address"][0]['location'][j]['ad1'])        
                    else: 
                        duplictae  =1
  

Я хочу сгенерировать CSV для сопоставленных данных и удалить их из файла JSON.
matched.csv

 id     Name    ad1
00201  John  NY,FL
00202  John  NY,FL
  

обновленный файл Json:

 "client_info": [
{
            "Id": "00203",
            "Information": {
                "Name": "John",
                "Age": 13
            },
            "Address": [
                {
                    "country": CA,
                    "location": [
                        {
                            "ad1": "NY"                          
                        }
                    ]
                }
            ]
        }
    ]
  

Комментарии:

1. Каков ваш желаемый результат?

2. Привет, я обновил свой вопрос.

3. Я полагаю uniqueTitleSet , должно быть uniqueNameSet ?

4. да, извините, мой плохой

5. предоставленный вами код не пытается сгенерировать что-либо подобное тому, что вы хотите, как это не дает вам то, что вы хотите? если ответ — это что-то иное, чем «это не создание CSV», тогда вам нужно немного больше деталей, и если речь идет только о создании CSV, то вы недостаточно изучили,