Предполагая список 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, что совершенно не элегантно

0
JFerro 20 Май 2021 в 18:34

2 ответа

Лучший ответ

Это был бы мой самодельный подход.

newLst = [{k:v for k,v in dicts.items() if k in ['a','b']}for dicts in last]
3
BuddyBob 20 Май 2021 в 15:41
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}]
0
sahasrara62 20 Май 2021 в 15:45