You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按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

实现思路

  1. 分组收集状态:以站点名为键,将同一站点的所有状态收集到一起(用集合去重,避免重复状态干扰判断)
  2. 状态判断:对每个站点的状态集合做检查,只要包含normal或alarm,就标记为Online;否则标记为Offline
  3. 输出结果:按要求的格式输出每个站点及其最终状态

代码实现(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:25:07