Предполагая список dicts:
[{'a':3434,'b':23424,'c':3231,'d':24334243},
{'a':344,'b':234,'c':321,'d':24334}
{'a':34,'b':2424,'c':31,'d':2434243},...]
Есть ли однострочный способ отфильтровать список, получая словари только с определенными ключами ['a', 'b']?
Например:
Result = [{'a':3434,'b':23424},
{'a':344,'b':234}
{'a':34,'b':2424},...]
Примечание: мое текущее решение связано с циклами for, что совершенно не элегантно
2 ответа
Это был бы мой самодельный подход.
newLst = [{k:v for k,v in dicts.items() if k in ['a','b']}for dicts in last]
a = [{'a':3434,'b':23424,'c':3231,'d':24334243},{'a':344,'b':234,'c':321,'d':24334},{'a':34,'b':2424,'c':31,'d':2434243}]
r = []
for i in a:
if ('a' in i) and ('b' in i):
r.append({'a':i['a'], 'b':i['b']})
print(r)
Выход
[{'a': 3434, 'b': 23424}, {'a': 344, 'b': 234}, {'a': 34, 'b': 2424}]
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.