Как извлечь информацию из словарей в списке? - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в Python, пытаюсь собрать данные из файла json, который состоит из списка, который содержит информацию внутри словарей следующим образом. Как извлечь из этого данные «подсчета»? (Без использования понимания списка)

{
   "stats":[
      {
        "name":"Ron",
        "count":98
      },
      {
        "name":"Sandy",
        "count":89
      },
      {
        "name":"Sam",
        "count":77
      }
   ]
}

Ответы [ 5 ]

0 голосов
/ 20 апреля 2020

с помощью функции map сделает это в одной строке

>>> result = list(map(lambda x: x['count'], data['stats']))
[98, 89, 77]
0 голосов
/ 20 апреля 2020

Согласно Дзен Python, «Простое лучше, чем сложное».

Таким образом, постижение списков - это на самом деле лучший способ извлечь нужную вам информацию и при этом иметь он доступен для дальнейшей обработки (в виде списка значений счетчика).

d = <your dict-list>
count_data_list = [ x['count'] for x in d['stats'] ]

Если нет, и вы намерены обработать данные «счетчика» по мере их извлечения, я бы предложил for-l oop:

d = <your dict-list>
for x in d['stats']:
  count_data = x['count']
  <process "count_data">
0 голосов
/ 20 апреля 2020

Рассмотрим данные словаря, хранящиеся в источнике переменной.

    source = {
   "stats":[
      {
        "name":"Ron",
        "count":98
      },
      {
        "name":"Sandy",
        "count":89
      },
      {
        "name":"Sam",
        "count":77
      }
   ]
}

Теперь, чтобы получить доступ к полю подсчета внутри «статистики», мы используем индексирование. Например, чтобы просмотреть количество «Рон», вы должны написать:

print(source['stats'][0]['count'])

Это приведет к 98

Аналогично, для «Сэма» это будет

print(source['stats'][2]['count'])

И результат будет 77

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

0 голосов
/ 20 апреля 2020

Просто append все эти значения для расчетов:

count_values = []

for dic in data['stats']:
    count_values.append(dic['count'])

# Do anything with count_values
print(count_values)
0 голосов
/ 20 апреля 2020

Индексируйте список с помощью клавиши stats, затем повторяйте его

data = {
   "stats":[
      {
        "name":"Ron",
        "count":98
      },
      {
        "name":"Sandy",
        "count":89
      },
      {
        "name":"Sam",
        "count":77
      }
   ]
}
for stat in data['stats']:
    count = stat['count']
...