Добрый день. Я не могу найти окончательного ответа на этот вопрос. Я пытаюсь расшифровать большой файл JSON, но я не знаю точных названий данных и поэтому хочу использовать подстановочный знак.

Я пытался использовать '[*]' '[]' и все остальное, о чем я могу думать - не повезло!

В моем нынешнем виде код выглядит так:

import json
from pprint import pprint

with open('data.json') as data_file:    
    data = json.load(data_file)

pprint(data['Descriptions']['WILDCARD']['name'])

Я использую Python версии 2.7.1, но также 3.3. Я могу делать это совершенно неправильно ...

Любая помощь приветствуется! :-)

2
user5683555 17 Дек 2015 в 01:43

3 ответа

Лучший ответ

Там нет такой вещи. Вам нужно будет просмотреть все элементы в data['Descriptions'].values() и проверить

  1. Убедитесь, что это диктат.
  2. Убедитесь, что у него есть поле 'name'.

После того, как вы сделали эти проверки, вы можете упаковать его в список. вот список-понимание, которое должно выполнить работу ... (я думаю: -) ...

names = [d['name'] for d in data['Descriptions'].values()
         if isinstance(d, dict) and 'name' in d]
5
mgilson 16 Дек 2015 в 22:46

something[*].x реализован как [item.x for item in something]

РЕДАКТИРОВАТЬ:

Вышеприведенное верно, если something является list. Для словарей это:

[item.x for item in something.values()]
0
zvone 16 Дек 2015 в 22:48

Я опоздал на вечеринку, но я бы предложил никогда не использовать pprint при использовании объектов json или вызовов API.

Вместо этого сделайте что-то вроде ## print (json.dumps (data [key], indent = 4)) ###

0
Devin L 18 Июл 2018 в 18:18