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

如何筛选WebSocket返回的嵌套列表:仅保留首索引匹配的子列表

嘿,我帮你搞定这个WebSocket数据筛选的问题!你需要从返回的嵌套/多层列表里,提取出那些子列表首个索引元素符合指定要求的项,对吧?下面是几个实用的处理方案,都是基于Python的(毕竟处理这类结构化数据用Python最顺手):

核心思路

说白了就是两步:遍历WebSocket返回的每一组顶级列表,然后对每个组里的子列表做判断,只保留那些首个索引(也就是子列表第0位元素)匹配你目标值的项。如果你的“首个索引”其实指的是子列表里的其他位置(比如示例里的第1位数字0/1),也可以直接调整判断逻辑就行,后面会讲。

1. 处理静态示例数据(先跑通逻辑)

先把你给的示例数据整理成可直接运行的格式:

ws_sample_data = [
    [['o', 0, '9726.85438804', '0.40716427']],
    [['o', 0, '9909.02930523', '0.00000000'], ['o', 0, '9855.53483394', '12.07669000']],
    [['o', 0, '9669.50657753', '0.00000000'], ['o', 0, '9669.60657753', '0.30000000']],
    [['o', 1, '9660.00000000', '0.00000000'], ['o', 1, '9658.52360670', '0.00000000']]
]

比如你想筛选所有子列表第0位是'o'的项,用列表推导式就能快速实现:

# 定义你要匹配的目标值,这里是子列表首个元素为'o'
target_value = 'o'

filtered_result = []
# 遍历每一组数据
for group in ws_sample_data:
    # 筛选当前组里符合条件的子列表
    matched_items = [sublist for sublist in group if sublist[0] == target_value]
    # 把结果合并到最终列表里
    filtered_result.extend(matched_items)

# 看看筛选后的结果
print(filtered_result)

运行后就会得到所有符合条件的子列表啦。

2. 实时处理WebSocket数据流

要是你是实时接收WebSocket消息(比如用websockets库),可以在收到消息的瞬间就处理:

import asyncio
import websockets
import json

async def process_ws_data():
    # 替换成你的WebSocket服务地址
    ws_uri = "wss://your-websocket-server-url"
    # 这里假设你要匹配子列表首个元素为'o',可按需修改
    target = 'o'

    async with websockets.connect(ws_uri) as websocket:
        while True:
            # 接收WebSocket消息
            raw_message = await websocket.recv()
            # 把JSON字符串解析成列表(如果返回的是纯字符串格式,可能要调整解析方式)
            data = json.loads(raw_message)
            
            # 实时筛选符合条件的子列表
            matched_sublists = [sublist for sublist in data if sublist[0] == target]
            
            # 这里可以换成你自己的业务逻辑,比如存储到数据库、推送前端等
            print("实时筛选结果:", matched_sublists)

# 启动异步任务
asyncio.run(process_ws_data())

3. 灵活调整匹配条件

如果你的需求不是匹配子列表第0位,而是其他索引(比如示例里的第1位数字0或1),只需要改判断条件里的索引就行。比如要提取子列表第1位是0的项:

target = 0
matched_sublists = [sublist for sublist in group if sublist[1] == target]

这样就能完全适配你的具体需求了。


内容的提问来源于stack exchange,提问作者swifty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:40:12