Извлечь значения из массива в python - PullRequest
0 голосов
/ 06 марта 2020

У меня возникли проблемы с доступом к значению, которое находится внутри массива, содержащего словарь и другой массив.

Это выглядит так:

[{'name': 'Alex',
  'number_of_toys': [{'classification': 3, 'count': 383},
   {'classification': 1, 'count': 29},
   {'classification': 0, 'count': 61}],
  'total_toys': 473},
 {'name': 'John',
  'number_of_toys': [{'classification': 3, 'count': 8461},
   {'classification': 0, 'count': 3825},
   {'classification': 1, 'count': 1319}],
  'total_toys': 13605}]

Я хочу получить доступ к число 'count' для каждой 'классификации'. Например, для «имени» Алекса, если «классификация» равна 3, тогда код возвращает «число» 383 и т. Д. Для других классификаций и имен.

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Не уверен, что ваш вопрос задает, но если это всего лишь упражнение по составлению карт, вы попадете на правильный путь.

def get_toys(personDict):
    person_toys = personDict.get('number_of_toys')
    return [ (toys.get('classification'), toys.get('count')) for toys in person_toys]

def get_person_toys(database):
    return [(personDict.get('name'), get_toys(personDict)) for personDict in database]

Этот результат:

[('Alex', [(3, 383), (1, 29), (0, 61)]), ('John', [(3, 8461), (0, 3825), (1, 1319)])]

0 голосов
/ 06 марта 2020

Это не так элегантно, как предыдущий ответ, потому что он не перебирает значения, но если вы хотите выбрать определенные c элементы, это один из способов сделать это:

data = [{'name': 'Alex',
  'number_of_toys': [{'classification': 3, 'count': 383},
   {'classification': 1, 'count': 29},
   {'classification': 0, 'count': 61}],
  'total_toys': 473},
 {'name': 'John',
  'number_of_toys': [{'classification': 3, 'count': 8461},
   {'classification': 0, 'count': 3825},
   {'classification': 1, 'count': 1319}],
  'total_toys': 13605}]    

import pandas as pd
df = pd.DataFrame(data)
print(df.loc[0]['name'])
print(df.loc[0][1][0]['classification'])
print(df.loc[0][1][0]['count'])

, что дает:

Alex
3
383
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...