如何移除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
相关产品推荐
相关产品推荐

