python - 通过遍历键列表并与另一个字典配对来使用键值对填充字典
问题描述
给定一个空字典:
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 都是键,而 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}
解决方案
您可以尝试同时zip
ping 两个列表,然后从中创建一个字典,然后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
推荐阅读
- angular - Angular 7.1.4 版上的 NPM 严重性漏洞
- scala - Spark SQL中的'col(带勾号)表达式是什么意思?
- html - 社交媒体图标不是垂直对齐而不是水平对齐
- excel - VBA excel - 包含日期的单元格返回空值
- excel - 带有excel 2010的VB脚本
- javascript - 使用 import 和动态 import() 加载相同的模块
- ssms - SSMS:从自动刷新的其他表创建新表
- ruby-on-rails - 在 rspec 中运行时,isolate_namespace 错过 Rails::Engine::ActionDispatch
- java - 如何用接口方法的方法引用替换 lambda?
- c++ - 当实例变量未初始化时,如何使 C++ 编译器产生错误或警告?