I have a list of dictionaries and I am trying to loop and need to check 'pmdruleid'
in the rulenames
matches any of the 'pmdruleid'
in activeclientrulelist
. I am using below code and am getting None
every time. The below code checks corresponding index value in the loop instead of checking any matching values in list:
activeclientrulelist = [{'pmdruleid': 112, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1},
{'pmdruleid': 10160, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1},
{'pmdruleid': 10016, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1},
{'pmdruleid':111, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1},
{'pmdruleid': 111, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1},
{'pmdruleid': 10020, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1}]
rulenames = [{'pmdruleid': 112, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1},
{'pmdruleid': 10160, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1}]
if len(activeclientrulelist) > 0:
for rule in rulenames:
matching_active_client_rule_items = [y for y in activeclientrulelist if y['pmdruleid'] == rule['pmdruleid']
Expected output
[{'pmdruleid': 112, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1},
{'pmdruleid': 10160, 'createdby': 'Ad hoc Script - PHARMMD\\Jake.Woods', 'updatedby': None, 'transferstatuscode': 1}]