Swift等效于Python字典setdefault()方法

时间:2019-05-10 06:14:46

标签: python swift dictionary

如果字典中缺少键,则Python字典上的setdefault()方法将设置键的值并返回该值。 Reference

Swift字典有类似的方法吗?

我尝试过:

var dic1 = ["a": 1]
let defVal = dic1["b", default: 2]
print(defVal) // prints 2
print(dic1) // prints ["a": 1]
// However, I need ["a": 1, "b": 2]

2 个答案:

答案 0 :(得分:1)

这是声明了setDefault的扩展

extension Dictionary {
    mutating func setDefault(_ key: Key, value: Value) {
        if self[key] == nil {
           self[key] = value
        }
    }
}

示例

var d1: [String: Int] = ["A": 4]
d1["C"] = 13
d1.setDefault("B", value: 42)

print(d1)

输出

  

[“ A”:4,“ C”:13,“ B”:42]

答案 1 :(得分:0)

如果我理解正确,python方法对字典的作用是这样的:

dict[someKey] = dict[someKey] ?? defaultValue

如果尚无与someKey关联的值,请将defaultValuesomeKey关联。

您可以将其扩展:

extension Dictionary {
    subscript(default key: Key) -> Value? {
        get { return self[key] }
        set {
            self[key] = self[key] ?? newValue
        }
    }
}

// usage:
// someDict[default: someKey] = someValue