簡體   English   中英

我如何在 Elixir Map 中提取值

[英]How do i extract values inside Elixir Map

假設我有這個

%{
  "contact_full_name" => ["Jane", "Joe", "Job"],
  "contact_mobile_number" => ["1234", "5678", "9012"],
  "contact_relationship" => ["sibling", "stuff", "stuff"]
}

我如何遍歷該地圖,獲取"jane, 1234, sibling""Jone, "5678", "stuff"等。

嘗試使用

Enum.each(contact, fn {k, v} ->
  IO.puts("#{k} --> #{v}")
end)

但這會產生

contact_full_name --> JaneJoeJob
contact_mobile_number --> 123456789012
contact_relationship --> siblingstuffstuff

您可以使用Map.values/1提取地圖值,然后使用Enum.zip/1壓縮列表值:

contact_details = %{
  "contact_full_name"     => ["Jane", "Joe", "Job"],
  "contact_mobile_number" => ["1234", "5678", "9012"],
  "contact_relationship"  => ["sibling", "stuff", "stuff"]
}

contact_details |> Map.values() |> Enum.zip()

這產生:

[
  {"Jane", "1234", "sibling"},
  {"Joe", "5678", "stuff"},
  {"Job", "9012", "stuff"}
]

但是,請注意,這會返回一個元組列表。 您可以使用額外的步驟將元組轉換為列表,以使用Tuple.to_list/1映射和轉換元組:

contact_details 
|> Map.values() 
|> Enum.zip() 
|> Enum.map(&Tuple.to_list/1)

哪個產量:

[
  ["Jane", "1234", "sibling"],
  ["Joe", "5678", "stuff"],
  ["Job", "9012", "stuff"]
]

希望這可以幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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