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

如何构建支持人员与关联数对联合索引的person_values参数

实现目标

构建支持(人员标识, 数对)联合键查询的person_values结构,满足以下查询效果:

  • person_values['p',(1, 2)] 返回 2.5
  • person_values['q',(2, 3)] 返回 7.4

给定基础数据如下:

Pairs  = [(1, 2), (1, 7), (2, 3), (2, 5),(3, 4), (3, 5), (4, 1), (4, 5), (5, 2)]
Values = [ 2.5,    4.1,    7.4,    5.6,   2.8,    3.7,    6.9,     0.2,    3.2 ]

P1 = ['p','q']
p1_pairs = [   [(1, 2), (1, 7), (2, 3)], 
               [(1, 2), (2, 3), (2, 5) ,(5, 2)] 
           ]
实现步骤
  • 先将全局的数对列表和对应数值列表打包为字典,实现数对到数值的O(1)快速查询
  • 遍历所有人员及其关联的数对,以(人员, 数对)为键,从全局数对值字典中取值存入结果字典
完整代码
# 构建全局数对到数值的映射
pair_lookup = dict(zip(Pairs, Values))

person_values = {}
# 按索引对齐遍历人员和对应的关联数对列表
for person, pairs in zip(P1, p1_pairs):
    for single_pair in pairs:
        person_values[(person, single_pair)] = pair_lookup[single_pair]
结果验证

执行以下测试代码可以验证效果符合预期:

assert person_values['p', (1, 2)] == 2.5
assert person_values['q', (2, 3)] == 7.4
assert person_values['p', (1, 7)] == 4.1
assert person_values['q', (5, 2)] == 3.2

说明:Python中person_values['p',(1, 2)]和person_values[('p',(1, 2))]是完全等价的写法,解释器会自动将逗号分隔的多个索引值打包为元组作为字典键,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:33:34