您可以使用字典理解来实现此目的.在你的词典理解中,你需要调用你的列表理解来完善原始my_dict词典中作为值的每个列表的数字乘积.它可以实现为:
my_dict = {1: [11.1, 13, 15.0], 2: [6.9, 8.5, 10.17], 3: [3.86, 4.83, 6.07], 4: [3.86, 4.83, 6.07], 5: [2.31, 2.58, 3.02]}
d1_inv = [0.0248, 0.0296, 0.0357]
new_dict = {k: [round(i*j,4) for i, j in zip(v,d1_inv)] for k, v in my_dict.items()}
其中new_dict将是一个字典,其中包含初始my_dict中的每个键,其对应的值为:
{1: [0.2753, 0.3848, 0.5355], 2: [0.1711, 0.2516, 0.3631], 3: [0.0957, 0.143, 0.2167], 4: [0.0957, 0.143, 0.2167], 5: [0.0573, 0.0764, 0.1078]}
说明:此解决方案包括:
>外部词典理解表达,和
>内部列表理解表达式.
这里,外部字典理解:
{k: [...*list comprehension*...] for k, v in my_dict.items()}
将遍历字典,拉出my_dict.items()返回的元组(“key”,“value”)对.这里我使用k作为新词典的键,其中值v将用于内部列表理解表达式:
[round(i*j,4) for i, j in zip(v,d1_inv)]
这里,zip(v,d1_inv)将返回对应于d1_inv和v中相同位置的对象的元组(来自外部字典理解),然后我们在元组中存在的元素的乘积上调用round()函数(i,j) )由zip()的迭代返回.