Вы можете пропустить внешний список и использовать понимание списка:
my = [{'k1': 'a','k2': '1234','k3':'12'},
{'k1': 'a','k2': '1295','k3':'12'}]
print([x['k2'] for x in my if x['k2'].startswith('12')])
Проблема с исходным кодом заключается в дополнительном обходе всех записей в i
, если у него есть ключ 'k2'
со значением, начинающимся с '12'
.Это может быть записано как:
for i in my:
if i['k2'].startswith('12'):
print(i['k2'])
Обратите внимание, что код поднимает KeyError
, если 'k2'
не существует на одном из диктов, поэтому вы можете использовать
[x['k2'] for x in my if 'k2' in x and x['k2'].startswith('12')]
если вы предвидите этот сценарий.