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

Q语言(kdb+)中如何获取字典指定键对应的所有值

如何在kdb+中获取重复键对应的所有值?

你创建了一个带重复键的字典:

ddup:`a`b`a`c!10 20 30 20

直接用ddup[a]`只能拿到单个值10,尝试筛选键再取值时得到的是重复的10而非10 30,这是因为kdb+的字典本质是唯一键映射——当你用重复键创建字典时,系统会自动去重,只保留最后(或最早,取决于版本)出现的键值对,所以你无法直接从字典中获取同一个键的所有原始值。

要解决这个问题,你需要换一种数据结构或处理方式:

  • 方法1:基于原始键值列表筛选
    如果能拿到创建字典前的原始键列表和值列表,直接用where筛选索引来获取对应值:

    keys: `a`b`a`c
    vals: 10 20 30 20
    vals[where keys = `a]  // 输出:10 30
    
  • 方法2:构建多值映射结构
    用group函数对键分组,生成一个键到对应值列表的映射,这样就能快速查询任意键的所有值:

    keys: `a`b`a`c
    vals: 10 20 30 20
    // 构建多值映射
    multiMap: vals group keys
    // 查询`a`对应的所有值
    multiMap[`a]  // 输出:10 30
    

你的尝试之所以失败,是因为字典已经自动去重了重复键,你筛选出的aa`其实是同一个键的重复引用,自然会返回同一个值,而非原始的多个值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:14:55