通过遍历键列表并与另一个字典配对来用键值对填充字典

时间:2019-02-03 18:54:35

标签: python python-3.x dictionary

给出一个空字典:

matrix={}

和另一个list_of_dictionaries

[{(0, 1): 3, (2, 0): 2, (2, 1): 3}, 
{(2, 0): 3, (0, 0): 3, (2, 1): 3}, 
{(0, 1): 3, (0, 0): 2, (2, 1): 1},
{(0, 1): 3, (2, 0): 1, (0, 0): 3}]

我想遍历包含索引的列表:

indices=[(0, 0), (0, 1), (2, 0), (2, 1)]

并填充matrix,因此索引中的每个i in都是键,list_of_dictionaries中的每个字典都是关联值。

我已经搜索过,并且只能找到明确地更新和填充字典的方法,但是实际上,我不知道我的list_of_dictionaries将包含什么,也不知道索引将包含什么。我正在寻找“动态”解决方案,这是正确的说法吗?我知道

matrix.update(x) 

将仅接受一个参数(键或值?),但我想要一个同时包含键和值的解决方案。非常感谢。

for i in indices:

结果应返回矩阵,如下所示:

(0, 0):{(0, 1): 3, (2, 0): 2, (2, 1): 3}
(0, 1):{(2, 0): 3, (0, 0): 3, (2, 1): 3}
(2, 0):{(0, 1): 3, (0, 0): 2, (2, 1): 1}
(2, 1):{(0, 1): 3, (2, 0): 1, (0, 0): 3}

1 个答案:

答案 0 :(得分:0)

您可以尝试zip将两个列表一起拼写,然后从中创建一个字典,然后使用该字典更新matrix

matrix = {}
list_of_dictionaries = [{(0, 1): 3, (2, 0): 2, (2, 1): 3}, 
                        {(2, 0): 3, (0, 0): 3, (2, 1): 3}, 
                        {(0, 1): 3, (0, 0): 2, (2, 1): 1},
                        {(0, 1): 3, (2, 0): 1, (0, 0): 3}]
indices = [(0, 0), (0, 1), (2, 0), (2, 1)]

matrix.update(dict(zip(indices, list_of_dictionaries)))
print(matrix)

输出:

{(0, 0): {(0, 1): 3, (2, 0): 2, (2, 1): 3},
 (0, 1): {(2, 0): 3, (0, 0): 3, (2, 1): 3},
 (2, 0): {(0, 1): 3, (0, 0): 2, (2, 1): 1},
 (2, 1): {(0, 1): 3, (2, 0): 1, (0, 0): 3}}

如果必须使用for循环:

for i, d in zip(indices, list_of_dictionaries): 
    matrix[i] = d