7

Swap keys and values of a Dictionary

 3 years ago
source link: https://ohmyswift.com/blog/2021/03/24/swap-keys-and-values-of-a-dictionary/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Swap keys and values of a Dictionary

Mar 24, 2021 • Rizwan • Dictionary

swift, swift dictionary, dictionary

Dictionaries are one of the most commonly used data structures. Dictionaries come with keys and values where the keys are unique. Sometimes, there might be a situation where we would want to swap the keys and values of a dictionary. Let’s see how to swap keys and values of a dictionary in swift.

While doing so, we need to make sure that the values which are converted to keys are hashable and unique, else the conversion will fail.

extension Dictionary where Value: Hashable {
    struct DuplicateValuesError: Error { }
    init?(swappingKeysAndValues dict: [Value:  Key]) {
        do {
            try self.init(dict.lazy.map { ($0.value, $0.key) },
                          uniquingKeysWith: { _,_ in throw DuplicateValuesError() })
        } catch {
            return nil
        }
    }
}
let dict = [1 : "A", 2 : "B", 3 : "C", 4 : "D", 5 : "E"]
if let swappedDict = Dictionary(swappingKeysAndValues: dict) {
    print(swappedDict)
}else{
    print("Unable to swap keys and values")
}
Result:
["A": 1, "D": 4, "C": 3, "E": 5, "B": 2]

The given code tries to swap keys and values of the given dictionary, and in case something goes wrong, it fails gracefully.

Do you know a better approach than the one mentioned in this article? Let me know in the comments.

Credits and References

[1] https://stackoverflow.com/a/50008875

[2] https://cocoacasts.com/what-is-a-lazymapcollection-in-swift

About the author

More articles

Like our articles? Support us!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK