On 2020-12-07 22:06, Larry Martell wrote:
I have a class that has an object that contains a list of dicts. I
want to have a class method that takes a variable number of key/value
pairs and searches the list and returns the item that matches the
arguments.
If I know the key value pairs I can do something like this:
instance = next(item for item in data] if\
item["appCode"] == 1 and\
item["componentCode"] == "DB" and\
item["environmentEnumID"] == 12 and\
item["serverName"] == 'foo', None)
But in my class method if I have:
def find_data_row(self, **kwargs):
and I call it:
find_data_row(appCode=1, componentCode='DB', ...)
How can I do the search in a pythonic way?
An item is a match if:
all(item[key] == value for key, value in kwargs.items())
or possibly:
MISSING = object()
all(item.get(key, MISSING) == value for key, value in kwargs.items())
Just iterate over the list of dicts until you find a match.
--
https://mail.python.org/mailman/listinfo/python-list