簡體   English   中英

刪除具有空數組的鍵

[英]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_valuesHash#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM