How can I convert tuple of dictionaries like example present below:
({(1, 2): 3},
{(1, 3): 5},
{(1, 4): 5},
{(2, 4): 5},
{(1, 5): 10},
{(2, 6): 9},
{(1
If order of the elements in the desired dict
matters and is needed to be sorted as mentioned in the question, use collections.OrderedDict as:
# `original_list` is the variable holding the
# `list` of `dict` as mentioned in the question
required_dict = OrderedDict(
sorted((k, v) for sub_list in original_list for k, v in sub_list.items()))
# `OrderedDict` is represented as:
# OrderedDict([((1, 1), 2), ((1, 2), 3), ((1, 3), 5), ((1, 4), 5), ((1, 5), 10), ((1, 6), 9), ((2, 1), 2), ((2, 2), 3), ((2, 3), 5), ((2, 4), 5), ((2, 5), 10), ((2, 6), 9)])
but returns sorted dict
maintaining the order equivalent to the one desired in the question as:
{(1, 1): 2,
(1, 2): 3,
(1, 3): 5,
(1, 4): 5,
(1, 5): 10,
(1, 6): 9,
(2, 1): 12,
(2, 2): 7,
(2, 3): 7,
(2, 4): 3,
(2, 5): 4,
(2, 6): 2}
But if order of elements in the desired dict
doesn't matter, you may use simple dict comprehension to achieve it as:
required_dict = {k: v for sub_list in original_list for k, v in sub_list.items()}
where the value of required_dict
will be:
{
(1, 2): 3,
(2, 6): 9,
(1, 4): 5,
(1, 1): 2,
(1, 5): 10,
(1, 3): 5,
(1, 6): 9,
(2, 1): 2,
(2, 2): 3,
(2, 3): 5,
(2, 5): 10,
(2, 4): 5
}
Note: Order of items in the desired dict are different because dictionaries in Python are unordered by nature.