Как получить все "имя" и "идентификатор" из файла json в python3

Как я могу получить все имя и идентификатор из файла json. Это короткая версия моего файла json. Я хочу получить все имена и идентификаторы, чтобы сопоставить их с моей переменной. Тогда я могу запустить некоторую работу над этим. Пожалуйста, помогите мне получить все Id и имя. Я искал в Google, но не нашел. Каждый пример был из одного файла json.

[
 {
    "id": 707860,
    "name": "Hurzuf",
    "country": "UA",
    "coord": {
      "lon": 34.283333,
      "lat": 44.549999
    }
  },
  {
    "id": 519188,
    "name": "Novinki",
    "country": "RU",
    "coord": {
      "lon": 37.666668,
      "lat": 55.683334
    }
  },
  {
    "id": 1283378,
    "name": "Gorkhā",
    "country": "NP",
    "coord": {
      "lon": 84.633331,
      "lat": 28
    }
  }
]

Вот мой код:

import json

with open('city.list.json') as f:
    data = json.load(f)
for p_id in data:
    hay = p_id.get('name')

Предположим, у меня есть слово дели, теперь я сравниваю его с именем в словаре выше. когда он попадает, я хочу получить его идентификатор.

if hay == delhi:
   ga = # retrieve delhi's id

За исключением ошибки с отступом (которую я считаю опечаткой) в инструкции print, я не вижу ничего плохого в вашем коде. Просто добавьте еще один get в поле name. Или я не понял вопроса ...?

bergerg 17.12.2018 07:44

как вы хотите получить результат, ищете ли вы массив идентификаторов, имен по отдельности или любой массив dict, состоящий из имени и идентификатора? в любом случае простое понимание даст ответ

Suresh Mali 17.12.2018 07:53

Мне нужен вывод в массиве dict, чтобы я мог сопоставить имя, подобное raj, во всем dict и получить его идентификатор.

Lucifer 17.12.2018 08:00
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
2
3
3 120
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Не уверен, что именно на вашем выходе. Но это извлекает идентификатор и имя в новую переменную.

ids=[]
for p_id in data:
    ids.append((p_id['id'], p_id['name']))
print(ids)

Вывод:

[(707860, 'Hurzuf'), (519188, 'Novinki'), (1283378, 'Gorkhā')]
Ответ принят как подходящий

Вам нужно проверить имя и применить условие:

    for p_id in data:
        u_id = p_id.get('id')
        u_name = p_id.get('name')
        if (u_id == 1283378 and u_name == "Gorkha"):
            # dosomthing

предположим, что у меня есть слово delhi, и я получил выше json, содержащий {"id": 1283378, "name": "delhi", "country": "IN", "Coord": {"lon": 84.633331, "lat": 28} if (name == delhi): fa = # получить его идентификатор, поэтому я хочу сопоставить delhi со словарем и получить его идентификатор в var.

Lucifer 17.12.2018 08:14

Вы можете получить свой идентификатор по городу следующим образом: для p_id в данных: u_name = p_id.get ('name') if (u_name == "Gorkha"): print (p_id.get ('id'))

Adnan 17.12.2018 08:38

Я получаю идентификаторы других людей. Только не этот.

Lucifer 17.12.2018 08:49
import json with open('city.list.json') as f: data = json.load(f) for items in data: my1 = items.get('name') if my1 == "Novinki": print(items.get('id')) print("Got it")
Lucifer 17.12.2018 09:12

У меня все работает нормально: import json data = [....] для элементов данных: my1 = items.get ('name') if my1 == "Novinki": print (items.get ('id') ) print ("Понятно") Вывод: 519188

Adnan 17.12.2018 09:37

Спасибо большое . Я решил проблему, добавив разрыв в конце и создал этот код. import json with open('city.list.json') as f: data = json.load(f) for items in data: print(items) my1 = items.get('name') if (my1 in 'how is the Valsad'): my2 = items.get('id') print(my2) print(my1) break

Lucifer 17.12.2018 14:09

Я бы предложил другой подход: обработать данные JSON в dict и получить от него нужную информацию. Например:

import json

with open('city.list.json') as f:
    data = json.load(f)

name_by_id = dict([(str(p['id']), p['name']) for p in data])
id_by_name = dict([(p['name'], p['id']) for p in data])

И результаты:

>>> print(id_by_name['Hurzuf'])
707860
>>> print(name_by_id['519188'])
Novinki
import json

with open('citylist.json') as f:
    data = json.load(f)
    
list1 = list ((p_id.get('id') for p_id in data if p_id.get('name') == "Novinki")) 
# you can put this in print statement,
# but since goal is to save and not just print, 
# you can store in a variable
 
print(*list1, sep = "\n")

дает

519188

[Program finished]

Другие вопросы по теме