首页 > 解决方案 > 在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}

标签: pythondictionarykey-value

解决方案


您可以使用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
}

推荐阅读