jchackDragon
(Juan Carlos López R.)
1
Example:
From: ["Key1":[1,2,3], "Key2", [4,5,6]]
To: ["Key1": 1, "Key1": 2, "Key1": 3, "Key2":4, "Key2": 5, "Key2": 6]
Jens
2
The keys of a Dictionary are unique (there cannot be more than one eg "Key1" key), that's one of the defining features of a dictionary / hash table data structure.
3 Likes
AlexanderM
(Alexander Momchilov)
3
As @Jens said, Dictionary keys are unique. If you want a mapping from keys to multiple values, [Key: [Value]] is the way to achieve that, which is exactly what you already have.
So that begs the question: what's insufficient about [Key: [Value]] that makes you want to transform it in the way you describe?
BigZaphod
(Sean Heber)
4
As the others have said, a dictionary has unique keys, so this cannot really be done. If what you really want a list of pairs, then you might want to try transforming it into an array of tuples. The end result could look something like this:
[("Key1", 1), ("Key1", 2), ("Key1", 3), ("Key2", 4), ("Key2", 5), ("Key2", 6)]
If you need help writing code to do that, just let us know!
1 Like
griotspeak
(TJ Usiyan)
5
This wouldn't solve the general problem but, in your specific example, you can use the values as keys in the first place. Is that a reasonable solution for your actual case?
jchackDragon
(Juan Carlos López R.)
6
That's exactly what I want, I express badly
I think you can do something like this:
let originalDictionary = [
"Key1": [1,2,3],
"Key2": [4,5,6]
]
// to get [("Key1", 1), ("Key1", 2), ("Key1", 3), ("Key2", 4), ("Key2", 5), ("Key2", 6)]
let arrayOfTuples = originalDictionary.flatMap { element in
element.value.map {
(element.key, $0)
}
}
// to get [["Key1": 1], ["Key1": 2], ["Key1": 3], ["Key2": 4], ["Key2": 5], ["Key2": 6]]
let arrayOfDictionaries = originalDictionary.flatMap { element in
element.value.map {
[element.key: $0]
}
}
2 Likes