[英]Remove keys which have empty arrays
我需要刪除具有空數組的子鍵:
networks = {
"CL1": {
"192.168.200.0/24": [
],
"192.168.56.0/24": [
"192.168.56.57",
"192.168.56.84",
]
},
"CL2": {
"192.168.222.0/24": [
"192.168.222.224",
]
}
}
至
networks = {
"CL1": {
"192.168.56.0/24": [
"192.168.56.57",
"192.168.56.84",
]
},
"CL2": {
"192.168.222.0/24": [
"192.168.222.224",
]
}
}
是否可以刪除具有空數組的關鍵元素?
networks.transform_values { |v| v.reject { |_,a| a.empty? } }
#=> {:CL1=>{:"192.168.56.0/24"=>["192.168.56.57", "192.168.56.84"]},
# :CL2=>{:"192.168.222.0/24"=>["192.168.222.224"]}}
請參見Hash#transform_values和Hash#reject 。 前者在MRI v2.4中首次亮相。
您可以通過過濾內部哈希中的空鍵來創建新密鑰。
networks = networks.map {|key, inner_hash| [key, inner_hash.select{|k, v| v.any?}.to_h]}
.to_h
puts networks
# {
# :CL1 => {
# :"192.168.56.0/24" => ["192.168.56.57", "192.168.56.84"]
# },
# :CL2 => {
# :"192.168.222.0/24" => ["192.168.222.224"]
# }
# }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.