如何按OR运算逻辑汇总站点状态数据并生成对应输出?
站点状态聚合处理方案
需求概述
现有一组站点状态数据,每条数据包含站点名称与状态,状态分为normal、alarm、offline三种。需按以下规则聚合状态:
normal和alarm统一等价为Online- 遵循OR运算逻辑:同一站点只要存在
normal或alarm状态,最终输出Online;仅存在offline时,输出Offline
示例输入
[["site1", "normal"], ["site1", "offline"], ["site1", "alarm"], ["site2", "offline"], ["site3", "normal"], ["site3", "alarm"], ["site3", "offline"]]
期望输出
site1 Online site2 Offline site3 Online
实现思路
- 分组收集状态:以站点名为键,将同一站点的所有状态收集到一起(用集合去重,避免重复状态干扰判断)
- 状态判断:对每个站点的状态集合做检查,只要包含
normal或alarm,就标记为Online;否则标记为Offline - 输出结果:按要求的格式输出每个站点及其最终状态
代码实现(Python)
# 原始站点数据 site_records = [ ["site1", "normal"], ["site1", "offline"], ["site1", "alarm"], ["site2", "offline"], ["site3", "normal"], ["site3", "alarm"], ["site3", "offline"] ] # 初始化字典,用于按站点分组存储状态 site_status_map = {} # 遍历数据完成分组 for site, status in site_records: if site not in site_status_map: site_status_map[site] = set() site_status_map[site].add(status) # 生成并输出最终结果 for site, statuses in site_status_map.items(): if "normal" in statuses or "alarm" in statuses: print(f"{site} Online") else: print(f"{site} Offline")
逻辑说明
- 使用字典+集合的组合,既实现了站点分组,又自动过滤了重复的状态值,提升判断效率
- 判断逻辑直接对应需求中的OR规则,清晰易懂,便于维护
- 输出格式完全匹配期望结果
内容的提问来源于stack exchange,提问作者GohanHango
相关产品推荐
相关产品推荐

