У меня есть список словарей с именем api_data
, где каждый словарь имеет такую структуру:
{
'location':
{
'indoor': 0,
'exact_location': 0,
'latitude': '45.502',
'altitude': '133.9',
'id': 12780,
'country': 'IT',
'longitude': '9.146'
},
'sampling_rate': None,
'id': 91976363,
'sensordatavalues':
[
{
'value_type': 'P1',
'value': '8.85',
'id': 197572463
},
{
'value_type': 'P2',
'value': '3.95',
'id': 197572466
}
{
'value_type': 'temperature',
'value': '20.80',
'id': 197572625
},
{
'value_type': 'humidity',
'value': '97.70',
'id': 197572626
}
],
'sensor':
{
'id': 24645,
'sensor_type':
{
'name': 'DHT22',
'id': 9,
'manufacturer':
'various'
},
'pin': '7'
},
'timestamp': '2020-04-18 18:37:50'
},
Эта структура не полная для каждого словаря, то есть иногда словарь , элемент списка или ключ отсутствует.
Я хочу извлечь значение ключа, когда значение ключа того же словаря равно некоторому значению.
Например, для словаря sensordatavalues
, Я хочу, чтобы значение ключа 'value'
, когда 'value_type'
равно 'P1'
.
Я разработал этот код, работающий с циклами for и if, но держу пари, что он сильно неэффективен. Как я могу сделать это быстрее и эффективнее?
Обратите внимание, что sensordatavalues
всегда существует
for sensor in api_data:
sensordatavalues = sensor['sensordatavalues']
# L_sdv = len(sensordatavalues)
for physical_quantity_recorded in sensordatavalues:
if physical_quantity_recorded['value_type'] == 'P1':
PM10_value = physical_quantity_recorded['value']