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

Python中如何输出字典里值大于0.8的键值对组合?

解决字典筛选条目并同时输出键值的问题

问题背景

我有一个名为results的字典,键是股票代码组成的元组,值是对应相关系数,结构如下:

{('AAPL', 'AAPL'): 1.0,
 ('AAPL', 'ABBV'): 0.2895481094217945,
 ('AAPL', 'AMZN'): 0.7985187751534586,
 ('AAPL', 'BAC'): 0.5923872592768968,
 ('AAPL', 'BRK-B'): 0.6076448647592143,
 ('AAPL', 'COST'): 0.6723253260025647,
 ('AAPL', 'CVX'): 0.2808264364499576,
 ('AAPL', 'GOOG'): 0.7932767338793895,
......
}

我需要筛选出值大于0.8的条目,当前代码只能输出符合条件的值:

i = 0

for i in results:
        if results[i] > 0.8:
            print(results[i])

输出结果:

1.0
0.8506229861474826
0.9999999999999998
1.0
0.8269262016223845
0.8266345202049308
.......

但我希望同时输出对应的股票代码组合,尝试过几种写法都报错:

  • 写法1:
    print(results[ticker][I])
    
    报错:

    IndexError: invalid index to scalar variable.

  • 写法2:
    keys = results.keys()
    # 循环部分省略
    print(results[keys[i]][I])
    
    报错:

    TypeError: 'dict_keys' object is not subscriptable

解决方案

方法1:直接遍历键值对(最简洁)

用items()方法同时获取键和值,循环时直接解构使用,判断后输出:

for ticker_pair, value in results.items():
    if value > 0.8:
        print(f"股票组合: {ticker_pair}, 对应值: {value}")

items()会返回字典中每个键值对的元组,循环时直接拆分出股票代码组合ticker_pair和对应值value,无需额外索引操作。

方法2:沿用原循环逻辑调整输出

如果想保留遍历键的写法,直接打印当前键和对应的值即可:

for ticker_pair in results:
    value = results[ticker_pair]
    if value > 0.8:
        print(f"{ticker_pair}: {value}")

这里ticker_pair就是每次循环拿到的股票代码元组,直接输出它和对应的value就行。

方法3:生成筛选后的新字典(适合后续复用)

如果需要保存筛选结果而非直接打印,用字典推导式生成新字典:

filtered_results = {pair: val for pair, val in results.items() if val > 0.8}
# 打印新字典内容
for pair, val in filtered_results.items():
    print(pair, val)

错误原因说明

  • 第一种报错是因为ticker和I是未定义变量,且即便定义,results[ticker]返回的是标量值(比如1.0),无法再用下标索引。
  • 第二种报错是因为dict_keys对象仅支持迭代,不支持下标访问,不能用keys[i]取元素,要么转成列表(list(results.keys())),要么直接遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:15:49