给出一个空字典:
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}
答案 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