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

如何移除Julia字典中值为Inf的元素?解决KeyError问题

正确实现方式

你这段代码触发KeyError的核心问题是:遍历my_dict得到的pair是键值对元组(格式为(key, value)),但你把它当作键传入my_dict[pair]去取值,字典里根本没有这样的键,自然报错。

下面是两种可行的正确写法:

方法一:直接生成新字典(推荐)

通过推导式遍历键值对,过滤掉值为Inf的项,生成新字典:

# 解构键值对的写法,可读性更高
my_dict = Dict(key => val for (key, val) in my_dict if !isinf(val))

# 或者直接用pair的索引取值
my_dict = Dict(pair for pair in my_dict if !isinf(pair[2]))

方法二:原地删除指定键

如果不想创建新字典,而是在原字典上修改,可以先收集所有值为Inf的键,再批量删除:

# 收集要删除的键
keys_to_remove = [key for (key, val) in my_dict if isinf(val)]
# 逐个删除
for key in keys_to_remove
    delete!(my_dict, key)
end

另外注意:你定义原字典时重复使用了键(18, 17, "t"),Julia字典的键是唯一的,后面的20会覆盖前面的Inf,所以原字典中这个键的实际值是20,不会被过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:12