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
相关产品推荐
相关产品推荐

