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

如何按指定列表顺序提取元组键字典中的对应键值对?

解决方案

首先,你的原代码存在几个问题:

  • 循环逻辑顺序错误:应该先遍历目标顺序列表,再筛选字典中匹配的项,而非反过来
  • 变量名冲突:使用Python内置类型list作为变量名,会覆盖内置类型,建议改为target_order这类名称
  • 语法错误:print(k1,k2 : ,k3)的冒号位置不符合Python语法规范

以下是两种可行的实现方式:

方式一:直接按顺序输出匹配的键值对

d = {(1,100) : 0.5 , (1,150): 0.7 ,(1,190) : 0.8, (2,100) : 0.5 , (2,120): 0.7 ,(2,150) : 0.8, (3,100) : 0.5 , (3,110): 0.7 ,(4,100) : 0.5 , (4,150): 0.7 ,(4,190) : 0.8,(5,100) : 0.5 , (5,150): 0.7}
target_order = [4,2,1,3,5]

# 遍历目标顺序中的每个元素
for num in target_order:
    # 筛选字典中键的第一个元素匹配的项
    for key, value in d.items():
        if key[0] == num:
            print(f"{key} : {value}", end=", ")

方式二:生成有序的结果结构(Python 3.7+)

如果需要将结果保存为有序字典(Python 3.7+版本的字典默认保留插入顺序),可以这样实现:

d = {(1,100) : 0.5 , (1,150): 0.7 ,(1,190) : 0.8, (2,100) : 0.5 , (2,120): 0.7 ,(2,150) : 0.8, (3,100) : 0.5 , (3,110): 0.7 ,(4,100) : 0.5 , (4,150): 0.7 ,(4,190) : 0.8,(5,100) : 0.5 , (5,150): 0.7}
target_order = [4,2,1,3,5]

ordered_result = {}
for num in target_order:
    for key, value in d.items():
        if key[0] == num:
            ordered_result[key] = value

# 打印最终有序结果
print(ordered_result)

运行后会得到你需要的有序输出:{(4, 100): 0.5, (4, 150): 0.7, (4, 190): 0.8, (2, 100): 0.5, (2, 120): 0.7, (2, 150): 0.8, (1, 100): 0.5, (1, 150): 0.7, (1, 190): 0.8, (3, 100): 0.5, (3, 110): 0.7, (5, 100): 0.5, (5, 150): 0.7}


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:05:29