Найдите словарь из списка, в котором есть пара ключей 'isGeo': True - PullRequest
0 голосов
/ 27 октября 2018

Как найти словарь из списка, в котором есть пара ключей 'isGeo': True

dimensions = [{'key': 2600330, 'id': 'location', 'name': 'Location', 'isGeo': True, 'geoType': 'region'}, {'key': 2600340, 'id': 'subject', 'name': 'Subject', 'isGeo': False, 'geoType': None}, {'key': 2600350, 'id': 'measure', 'name': 'Measure', 'isGeo': False, 'geoType': None}]

Я хочу, чтобы результат ниже:

{'key': 2600330, 'id': 'location', 'name': 'Location', 'isGeo': True, 'geoType': 'region'}

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Другой способ - list comprehension

dimensions = [{'key': 2600330, 'id': 'location', 'name': 'Location', 'isGeo': True, 'geoType': 'region'}, {'key': 2600340, 'id': 'subject', 'name': 'Subject', 'isGeo': False, 'geoType': None}, {'key': 2600350, 'id': 'measure', 'name': 'Measure', 'isGeo': False, 'geoType': None}]

geoDimension = [dimension for dimension in dimensions if dimension['isGeo']][0]

Выход: {'key': 2600330, 'id': 'location', 'name': 'Location', 'isGeo': True, 'geoType': 'region'}

0 голосов
/ 27 октября 2018

Используйте next с выражением генератора :

res = next((d for d in dimensions if d['isGeo']), None)

{'key': 2600330, 'id': 'location', 'name': 'Location', 'isGeo': True, 'geoType': 'region'}

Поскольку вы пометили , вы также можете использовать панд:

import pandas as pd

df = pd.DataFrame(dimensions)
res = df.loc[df['isGeo']].iloc[0].to_dict()

Приведенные выше решения предполагают, что вы хотите, чтобы только словарь first удовлетворял вашему условию.Если вы хотите список словарей, используйте:

res = [d for d in dimensions if d['isGeo']]
res = df.loc[df['isGeo']].to_dict('records')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...