I have created a list of dictionaries of named tuples, keyed with an event type.
JavaScript
x
2
1
[{'EVENT_DELETE': DeleteRequestDetails(rid=53421, user='user1', type='EVENT_DELETE', reviewed=1, approved=1, completed=0)},{'EVENT_DELETE': DeleteRequestDetails(rid=13423, user='user2', type='EVENT_DELETE', reviewed=1, approved=1, completed=0)},{'EVENT_DELETE': DeleteRequestDetails(rid=98343, user='user2', type='EVENT_DELETE', reviewed=1, approved=0, completed=0)}]
2
What would be the most pythonic method to return/print results that only contain “approved=1”, or “reviewed=1” and “approved=0”?
Advertisement
Answer
Not sure what output format you want exactly, but here’s a demo for approved == 1
.
JavaScript
1
7
1
>>> from collections import namedtuple
2
>>> DeleteRequestDetails = namedtuple('DeleteRequestDetails', 'rid user type reviewed approved completed')
3
>>> lst = [{'EVENT_DELETE': DeleteRequestDetails(rid=53421, user='user1', type='EVENT_DELETE', reviewed=1, approved=1, completed=0)},{'EVENT_DELETE': DeleteRequestDetails(rid=13423, user='user2', type='EVENT_DELETE', reviewed=1, approved=1, completed=0)},{'EVENT_DELETE': DeleteRequestDetails(rid=98343, user='user2', type='EVENT_DELETE', reviewed=1, approved=0, completed=0)}]
4
>>> [v for d in lst for v in d.values() if v.approved == 1]
5
[DeleteRequestDetails(rid=53421, user='user1', type='EVENT_DELETE', reviewed=1, approved=1, completed=0),
6
DeleteRequestDetails(rid=13423, user='user2', type='EVENT_DELETE', reviewed=1, approved=1, completed=0)]
7