2013-10-21 58 views
-2

我:Python字典搜索,比较,并计算如下面两个字典值

dict1 = {1: (7, 5), 2: (5, 9), 3: (3, 4)} 

dict2 = {1: (9, 12), 2: (6, 11), 3: (7, 19)} 

字典可以有无限的数字键的也许是10K,每个密钥都是唯一的正数。我需要三个分开的函数,它们将返回一个单一的密钥:

func1)第二个值位置之间的最大差异,在19-4 = 15以上的例子中是密钥3。

func2)第一个值位置之间的最大差异,在7-3 = 4以上的例子中也是关键3。

FUNC3)作为关键值的总和,这是关键3再次因为(7 + 19)最高差 - (3 + 4)= 19个

两个字典具有相同的键和dict2可具有相同或更高的价值。如果函数找到多个,并且结果相同的一个密钥,它将返回更高的密钥。

+0

@RyPeck提供了一个很好的观点,除非您希望有人为您编写代码,否则我们需要继续努力。 –

+0

我不确定如何开始,我并没有要求完成的解决方案只是为了一个好的起点。 – Goran

回答

1

怎么样简单的事情就像单个遍历的字典。如果他们具有相同的密钥,则可以迭代1个字典。

def func(d1, d2): 
    m = (0, 0) 
    for k in d1: 
     res = abs(d1[k][1] - d2[k][1]) #func1 
     #res = abs(d1[k][0] - d2[k][0]) # func2 
     #res = abs(sum(d1[k]) - sum(d2[k])) # func3 
     if res > m[1]: m = (k, res) 
    return m[0] 
+0

简单而且非常有效。谢谢比尔 – Goran