python - 在python中替换字典的值
问题描述
我有一本看起来像这样的字典:
d1 = {('a', 'b'): 300.0,
('b, 'c'): '0.1*K1',
('a', 'c'): 0.462,
('c', 'e'): '0.2*K2',
('b', 'a'): '0.1*K1',
('c','d'): 'K1*K3'}
K1, K2, K3 = 2.1, 3.4, 2
我想'0.1*K1'
在 d1 中用 0.1*K1替换,'0.2*K2'
在 d2 中用 0.2*K2 替换,依此类推。d1
需要替换的值作为 中的键给出,d2
它们将替换为 中的相应值d2
:
d2 = {'0.1*K1':0.1*K1, '0.1*K2':'0.1*K2', 'K2*K3':K2*K3}
最终结果将是一个字典:
d1_new = {('a', 'b'): 300.0,
('b, 'c'): 0.21,
('a', 'c'): 0.462,
('c', 'e'): 0.68,
('b', 'a'): 0.21',
('c','d'): 6.8}
解决方案
您可以使用eval来评估表达式:
d2 = {key: eval(str(value)) for key, value in d1.items()}
这将导致:
{
('a', 'b'): 300.0,
('b', 'c'): 0.21000000000000002,
('a', 'c'): 0.462,
('c', 'e'): 0.68,
('b', 'a'): 0.21000000000000002,
('c', 'd'): 4.2
}
推荐阅读
- mysql - 更改每个 ID 列的第一个值
- python - Python Excel文件仅导入具有数组数据的行并忽略非数组类数据
- python - python中最大和第二大的数字
- java - 在 OpenCV 中使用逆 DFT 和幅度 + 相位矩阵重建图像
- node.js - 通过 POST 请求使用 NodeJS/ExpressJS 处理二进制图像或文件
- google-data-studio - 如何将参数发送到 DataStudio 报表中的下拉列表?
- c++ - 重载的 Double Equal 运算符未按预期工作
- python - FileNotFoundError:[Errno2] 没有这样的文件或目录:'i'
- php - MySQLi 准备好的语句在没有绑定参数的情况下失败
- git - 如何在一个项目中使用多个 git 存储库