1 回答

TA貢獻1886條經(jīng)驗 獲得超2個贊
如果您有大量或可變數(shù)量的鍵,則可以使用all循環(huán)遍歷它們。下面是一個示例,其中鍵值作為關(guān)鍵字參數(shù)提供:
def filter_dicts(dicts, **keys):
return [
d for d in dicts
if all(d[k] == v for k, v in keys.items())
]
正如 @juanpa.arrivillaga 指出的,dict_items對象在許多方面的行為類似于集合,因此您可以選擇過濾具有keys子集的字典:
def filter_dicts(dicts, **keys):
return [d for d in dicts if keys.items() <= d.items()]
例子:
>>> dicts = [{'x': 1, 'y': 2}, {'x': 1, 'y': 3}]
>>> filter_dicts(dicts, x=1)
[{'x': 1, 'y': 2}, {'x': 1, 'y': 3}]
>>> filter_dicts(dicts, x=1, y=2)
[{'x': 1, 'y': 2}]
>>> filter_dicts(dicts, y=3)
[{'x': 1, 'y': 3}]
添加回答
舉報