我有三个具有类似键的字典,我想用它们的值进行一些计算。你知道吗
dict1 = {key1: 1, key2: 2, key3: 3}
dict2 = {key1: 10, key2: 10, key3: 10}
dict2 = {key1: 1, key2: 2, key3: 3}
如何使用python查找具有以下结果的词典:
dict1.values() / ((dict2.values() - dict3.values())*100)
我在寻找这样的结果:
resultdict = {key1: .00111111, key2: .0025, key3: .00428571}
我成功地用两本字典按以下方式进行了计算,但我不知道如何包括第三本字典:
finaldict = {}
for key in (dict1.viewkeys() | dict2.viewkeys()):
if key in dict1: finaldict.setdefault(key, []).append(dict1[key][0])
if key in dict2: finaldict.setdefault(key, []).append(dict2[key])
for lst in finaldict.values():
if not lst[0] == 0:
lst[0] = (float(lst[1]) / float(lst[0]))*100
del lst[-1]
假设
dict1
中的键与dict2
和dict3
中的键相同,这应该是一个简单的解决方案:Rob已经提到了如何找到值,但是您还需要另外一件事,那就是如何获得常见的密钥。您可以尝试以下技巧:
然后,用这些键代替Rob提到的dict1中的键。你知道吗
编辑:
忘了提
你需要这样做。如果你对大量的字典感到特别懒惰,而且它们的编号方式与你所描述的一样整齐,那么你总是可以作弊:
如果你使用听写理解,这是很容易想到的,比如:
在
=
右边的表达式是dict理解。它创建一个diction并用循环的结果填充。在本例中,我们循环所有键for k in dict
。这个键:值对根据公式计算:k: dict1/dict2...
。你知道吗完整程序:
或者,如果您担心键列表可能不同,请使用键视图的交集(
&
)。这将产生一个set
,它只列出公共键。你知道吗当然,有时仅仅表达一种理解是不够的。始终可以切换回循环:
相关问题 更多 >
编程相关推荐