转换嵌套字典创建字符串Swift



我有一个字典,其中包含键和项模型的值。

var selectedDic: [String: [Item]] = [:]

  • 实际上,我正试图使一个字符串与字典键和键有多个值由逗号分隔。
  • 如果我添加更多的值到键,它应该添加值到特定的键。
  • pricepublisher为键,itemId为值。

我需要这个字符串:price:10-25;publisher:576,925,1737

字典打印:

[
"price": [
Babil.Item(name: Optional("10 - 25"),
itemId: Optional("10-25"))
],
"publisher": [
Babil.Item(name: Optional("ABCD"),
itemId: Optional("576")),
Babil.Item(name: Optional("DEFG"),
itemId: Optional("925")),
Babil.Item(name: Optional("HIJK"),
itemId: Optional("1737"),
)
]
]
我代码:

var itemString: [String: String] = [:]
var str: [String] = []

for (key, value) in selectedDic {
value.forEach { a in
if str.firstIndex(of: key) == nil {
str.append(a.itemId!)
}
}

let final = str.joined(separator: ",")
itemString.updateValue(final, forKey: key)

}

With:

struct Item {
let name: String?
let itemId: String?
}
let dict: [String: [Item]] = ["price": [Item(name: "10-25", itemId: "10-25")],
"publisher": [Item(name: "ABCD", itemId: "576"),
Item(name: "DEFG", itemId: "925"),
Item(name: "HIJK", itemId: "1737")]]

你可以使用:

var keys = ["price", "publisher"]
let reduced = keys.reduce(into: [String]()) { result, current in
guard let items = dict[current] else { return }
let itemsStr = items.compactMap {$0.itemId }.joined(separator: ",")
result.append("(current):(itemsStr)")
}
let finalStr = reduced.joined(separator: ";")
print(finalStr)

的想法:遍历所需的键(并保证顺序),为每个键构造itemsid列表,由","然后加上键。最后,加入了这一切。

附加问题:为什么nameitemId是可选的?这正常吗?

网站说明:给出第一部分(容易重复的输入)可以增加答案的变化,所以我们不必重新创建自己的假数据来检查我们的答案。

试试这个:键的顺序可以不同,因为它是字典,而顺序在字典

中并不重要。
print(
yourDict.map { (key, values) -> String in
"(key): (values.compactMap { $0.itemId }.joined(separator: ","))"
}.joined(separator: ";") 
)

相关内容

  • 没有找到相关文章

最新更新