gpt4 book ai didi

arrays - 快速检索第一个字典值

转载 作者:搜寻专家 更新时间:2023-11-01 05:54:56 24 4
gpt4 key购买 nike

我有这种类型的字典:

var dict = [1: ["Value-1-1", "", ""],
2: ["", "Value-2-2", "Value-2-3"],
3: ["Value-3-1", "Value-3-2", ""],
4: ["Value-4-1", "", "Value-4-3"],
5: ["", "", "Value-5-3"]]

我需要遍历这个字典,只获取每个键下第一个不为 nil 的值,并将其附加到数组中。

所以,最后,我的数组看起来像:

var array = ["Value-1-1", "Value-2-2", "Value3-1", "Value-4-1", "Value-5-3"]

我在这里读过这个问题 - SO Question但它不包括空值,我想知道是否可以在没有 map 的情况下使用 for in 或 while 循环?

如果有人能提供这种循环的代码示例,将不胜感激。谢谢!

最佳答案

按键对字典进行排序以获得定义明确的顺序,这给出了一个键/值对数组。然后使用 compactMap()first(where:) 将每一对映射到值数组中的第一个非空字符串(如果存在):

let dict = [1: ["Value-1-1", "", ""],
2: ["", "Value-2-2", "Value-2-3"],
3: ["Value-3-1", "Value-3-2", ""],
4: ["Value-4-1", "", "Value-4-3"],
5: ["", "", "Value-5-3"]]


let array = dict.sorted(by: { $0.key < $1.key })
.compactMap { $0.value.first(where: { !$0.isEmpty }) }

print(array) // ["Value-1-1", "Value-2-2", "Value-3-1", "Value-4-1", "Value-5-3"]

关于arrays - 快速检索第一个字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52278432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com