【发布时间】:2021-02-02 13:24:28
【问题描述】:
我有一个字典列表,我正在尝试循环并需要检查rulenames 中的'pmdruleid' 是否匹配activeclientrulelist 中的任何'pmdruleid'。我正在使用下面的代码,每次都得到None。以下代码在循环中检查相应的索引值,而不是检查列表中的任何匹配值:
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']
预期输出
[{'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': 112是从哪里来的?它不在两个字典中...... -
编辑了问题。请检查
-
我不确定预期的输出变量如何被称为
t,但matching_active_client_rule_items=...在所有迭代中都会覆盖该变量,因此它将仅包含rulenames的最后一项的匹配项