簡體   English   中英

將兩個 arrays 合並為 Swift 中的一個字典

[英]Combine two arrays to one dictionary in Swift

我有兩個數組:

let data = ["12 Mai 2021", "12 Mai 2021"]
let prices = [45.0, 50.0]

現在我想將這兩個轉換為一個字典,如下所示:

["12 Mai 2021":45.0, "12 Mai 2021":50.0]

如果 output 可以是:

[("12 Mai 2021",45.0),("12 Mai 2021",50.0)]

但我不知道這是否可能......在這個板上,我已經偶然發現了“zip”解決方案,如下所示:

var dictionary = [String: Double]()
zip(data, prices).forEach { dictionary[$0] = $1 }
print(dictionary)

但這以某種方式只是打印:

["12 Mai 2021": 50.0]

有人知道可行的解決方案嗎? 先感謝您!

你說你想要這個Dictionary

 ["12 Mai 2021":45.0, "12 Mai 2021":50.0]

但這是不可能的。 Dictionary中的每個鍵都必須是唯一的。 鑰匙"12 Mai 2021"不能使用兩次。

然后你說你更喜歡這個“輸出”:

 [("12 Mai 2021",45.0),("12 Mai 2021",50.0)]

那是一對數組(2元組),您可以使用zip得到答案:

let pairs = zip(data, prices).map { $0 }
// Type of pairs is [(String, Double)].

如果您真的想要Dictionary ,那么您必須決定如何處理重復鍵。 也許您希望 map 的每個日期鍵到該日期的價格數組 這是一種方法:

let d = Dictionary(zip(data, prices.map { [$0] })) { $0 + $1 }
// Result: ["12 Mai 2021": [45.0, 50.0]]

這是上面代碼的作用。

  1. prices.map { [$0] }prices[Double]轉換為[[Double]] ,即轉換為Double的 arrays 數組,其中每個內部數組僅包含一個價格: [[45.0], [50.0]] .

  2. zip將日期和單價 arrays 組合成對: [("12 Mai 2021", [45.0]), ("12 Mai 2021", [50.0])]

  3. Dictionary初始化程序將對數組轉換為[String: [Double]] 當它找到重復的鍵時,它使用閉包{ $0 + $1 }組合相應的值。 在這里, $0$1都是[Double] ,所以閉包加入了 arrays。

暫無
暫無

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

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