Though I have seen versions of my issue whereby a dictionary was created from two lists (one list with the keys, and the other with the corresponding values), I want to create a dictionary from a list (containing the keys), and 'lists of list' (containing the corresponding values).
An example of my code is:
#-Creating python dictionary from a list and lists of lists:
keys = [18, 34, 30, 30, 18]
values = [[7,8,9],[4,5,6],[1,2,3],[10,11,12],[13,14,15]]
print "This is example dictionary: "
print dictionary
The result I expect to get is:
{18:[7,8,9],34:[4,5,6],30:[1,2,3],30:[10,11,12],18:[13,14,15]}
I do not need the repeated keys (30, 18) to be paired up with their respective values.
Instead, I keep getting the following result:
{18: [13, 14, 15], 34: [4, 5, 6], 30: [10, 11, 12]}
This result is missing two of the elements from my expected list.
I am hoping to have some help from this forum.
As already mentioned, your desired output is not possible as dictionary keys must be unique.
Below are 2 alternatives if you do not want to lose data.
List of tuples
res = [(i, j) for i, j in zip(keys, values)]
# [(18, [7, 8, 9]),
# (34, [4, 5, 6]),
# (30, [1, 2, 3]),
# (30, [10, 11, 12]),
# (18, [13, 14, 15])]
Dictionary of lists
from collections import defaultdict
res = defaultdict(list)
for i, j in zip(keys, values):
res[i].append(j)
# defaultdict(list,
# {18: [[7, 8, 9], [13, 14, 15]],
# 30: [[1, 2, 3], [10, 11, 12]],
# 34: [[4, 5, 6]]})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With