我如何一个接一个地遍历所有键列表值,直到到达最后一个列表的数组值的末尾?所有列表对于每个键都是相同长度的。我的意思是:
my_dict1 = {'c1': [10, 11, 12], 'c2': [100, 110, 120], 'c3': [200, 210, 220]}
my_dict2 = {'c1': 3, 'c2': 1, 'c3': 2}
我需要得到的结果是:
result = 0.5 * ([10 * 3 + 100 * 1 + 200 * 2] + [11 * 3 + 110 * 1 + 210 * 2] + [12 * 3 + 120 * 1 + 220 * 2])
我检查了Multiplying the values of dictionaries with different keys和How to Multiply list elements in dictionary,但它们在这里没有派上用场。
下面的方法只适用于两个字典有相似的键的情况。
dict1 = {2: [10, 11, 12], 2: [100, 110, 120]}
dict2 = {2: [100, 110, 120], 2: [100, 110, 120]}
result = {i :[x*y for x, y in zip(dict1[i], dict2[i])] for i in dict1.keys()}
print(result)
结果:
{2: [10000, 12100, 14400]}
我应该由NumPy或Pandas来处理它吗?在我的真实的工作中,有一个字典或数据框的键数未知。
4条答案
按热度按时间ibrsph3r1#
你必须使用
my_dict1
中的键来找到my dict2
中的乘数,从那里开始,你可以压缩列表并求和,它可以是一个普通的Python内联程序:如上所示:
你也可以为同样的操作构建2个numpy数组:
然后:
按预期提供
vshtjzan2#
使用
zip
的一种方法是:或者使用
pandas
:输出:
igetnqfo3#
如果你只是想算算...
ukxgm1gy4#
在这里似乎使用Dataframe,Numpy和python就可以解决这个问题。正如Ballesta基于Python的回答:
使用Ballesta答案和Numpy:
或者像克里斯回答的那样用Pandas:
使用DataFrame的一种更简单的方法是: