Swap keys and values of a Dictionary
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
- Rizwan Ahmed - iOS Engineer. Twitter - https://twitter.com/rizwanasifahmed
More articles
Like our articles? Support us!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK