如果爲了在期望dict
元件的事項並且需要作爲問題提及進行排序,使用collections.OrderedDict
爲:
# `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)])
但返回排序dict
保持該訂單相當於問題中所需的訂單:
{(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}
但如果所需dict
元素的順序並不重要,你可以使用簡單的字典理解實現它:
required_dict = {k: v for sub_list in original_list for k, v in sub_list.items()}
其中required_dict
值將是:
{
(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
}
注意:所需字典中的項目順序不同,因爲Python中的字典本質上是無序的。
那你試試,什麼不工作? – Vallentin
看起來你應該能夠用元組的每個元素「更新」一個字典。 – mgilson