如何从AD事件字典中筛选匹配指定事件ID列表的键值对?
AD事件ID筛选解决方案
问题分析
你当前的代码逻辑错误在于:每次检测到目标ID存在时,直接输出整个字典的所有键值对,而非筛选出匹配的条目;同时e in event_code_list属于冗余判断(e本身就是从该列表遍历而来)。
正确实现方法
方法1:字典推导式(最简洁)
利用Python字典推导式快速筛选符合条件的键值对:
event_code_list = ['4662','4738','4763','4733','4730','4737','4753','4670','4754','4750'] events_and_ids = {'logged-in': '4624', 'Directory Service Access': '4662', 'permissions-changed': '4670', 'created-process': '4688', 'logged-out': '4634', 'exited-process': '4689', 'user-member-enumerated': '4799', 'Directory Service Access': '4662'} # 筛选值在目标ID列表中的条目 filtered_events = {k: v for k, v in events_and_ids.items() if v in event_code_list} print(filtered_events)
执行后输出:
{'Directory Service Access': '4662', 'permissions-changed': '4670'}
方法2:循环构建新字典(适合新手理解)
通过遍历原字典,手动将符合条件的条目添加到新字典:
filtered_events = {} for key, value in events_and_ids.items(): if value in event_code_list: filtered_events[key] = value print(filtered_events)
此方法输出结果与方法1完全一致。
注意:原字典中存在重复键
Directory Service Access,Python会自动保留最后一个重复键的条目(由于两个条目值相同,最终结果不受影响)。
内容的提问来源于stack exchange,提问作者Robin Sage
相关产品推荐
相关产品推荐

