假设我有一个可以识别的对象数组,我想从中创建字典.我可以很容易地从数组中获取元组,如下所示:

let tuples = myArray.map { return ($0.id, $0) }

但我看不到字典的初始值设定项可以接受元组array.我错过什么了吗?我是否为这个功能创建了dictionary扩展(事实上并不难,但我认为默认情况下会提供),或者有更简单的方法来实现这一点?



有扩展代码

extension Dictionary
{
    public init (_ arrayOfTuples : Array<(Key, Value)>)
    {
        self.init(minimumCapacity: arrayOfTuples.count)

        for tuple in arrayOfTuples
        {
            self[tuple.0] = tuple.1
        }
    }
}

推荐答案

Swift 4

如果元组是(可哈希、字符串),则可以使用:

let array = [("key1", "value1"), ("key2", "value2"), ("key3", "value3")]
let dictionary = array.reduce(into: [:]) { $0[$1.0] = $1.1 }
print(dictionary) // ["key1": "value1", "key2": "value2", "key3": "value3"]

Swift相关问答推荐

在Swift中initt()完成后运行一个函数

Form中的Divider在macOS上并不完全扩展

VisionOS发送通知

UITableView未显示类数组数据

Swift C外部实现的Task / Future类类型

按SWIFT中每个ID的最大值进行筛选/排序

如何使泡泡上的箭头直达封闭矩形

一种函数,用于判断变量的类型是否为在SWIFT中作为参数传递的类型

如何使用AsyncTimerSequence获取初始时钟,然后在指定的时间间隔内开始迭代?

SwiftUI-如何使用剩余时间制作倒计时计时器

物理主体未与 spritekit Swift 的网格图案上的纹理图像对齐

如何使用模型在 SwiftUI 的列表中进行搜索

类型擦除`AsyncMapSequence, Element>`

Swiftui 按钮依次显示一组图像

如何为 Swift UI 视图定义 struct ?

符合协议要求委托变量在 ios13 中可用

如何删除桥头而不出错?

Xcode 6 中的嵌入式内容包含 Swift 代码构建设置有什么作用?

如何发送静默推送通知有效负载

转换为 swift 3 后,视图控制器中出现奇怪的通用函数