我有一个哈希表:
{"path_1" => [1,2,3], "path_2" => [1,4,5], "path_3" => [1,2,3,4]}
我希望删除哈希表中所有“部分路径”。所以需要删除
path_1
,因为它是path_3
的部分;[1,2,3]
是[1,2,3,4]
的不完整数组。所有“部分路径”都需要从此哈希表中删除。这是我目前的代码,它可以运行,但处理大型哈希表时速度较慢:
# hash sorted by length of value
hash_array = {"path_1" => [1,2,3], "path_2" => [1,4,5], "path_3" => [1,2,3,4]}
# make a separate copy of the hash
cloned_hash_array = hash_array.clone
hash_array.each {|path_index, path|
# delete this path from the cloned hash so it doesn't match itself
cloned_hash_array.delete(path_index)
cloned_hash_array.each{|cloned_path_index, cloned_path|
if cloned_path[0,path.length] == path.clone
hash_array.delete(path_index)
end
}
}
do ... end
而不是{ ... }
,就像你在each
中所做的那样。 - Andrew Marshall{...}
代码块看起来很奇怪 :-) - Sergio Tulentsevdo ... end
更适合使用{...}
。 - SimonMayer;)
(它可以根据是否与def
/class
或do
配对来不同地突出显示end
)。 - Andrew Marshall