Как отфильтровать список словарей по значению определенного ключа?
Дано:
data_list = [
{'data': 0, port: '/dev/ttyS4'},
{'data': 1, port: '/dev/ttyS3'},
{'data': 0, port: '/dev/ttyS3'},
{'data': 1, port: '/dev/ttyS5'},
{'data': 1, port: '/dev/ttyS4'}
]
Мне нужно без перебора в цикле вернуть список, содержащий только те элементы (в данном случае словари), у которых port='/dev/ttyS5'.
Как это можно сделать?
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Это можно сделать через функцию filter:
data_list = [
{'data':0, 'port': '/dev/ttyS4'},
{'data':1, 'port': '/dev/ttyS3'},
{'data':0, 'port': '/dev/ttyS3'},
{'data':1, 'port': '/dev/ttyS5'},
{'data':1, 'port': '/dev/ttyS4'}
]
print(list(filter(lambda x: x['port'] == '/dev/ttyS5', data_list)))
# [{'data': 1, 'port': '/dev/ttyS5'}]
Тоже самое через генератор списка:
print([x for x in data_list if x['port'] == '/dev/ttyS5'])
# [{'data': 1, 'port': '/dev/ttyS5'}]