2014-02-27 44 views
0

我有一本dictionarys(D1..DN)的字典(D)。这些DN的内部是数字对。结果是这样的:按特定规则对字典进行排序

D = {1:{1: 15, 2: 20, 3: 50, 4:100}, 
    2:{1: 14, 2: 21, 3: 25, 4: 75}, 
    3:{1: 16, 2: 24, 3: 74, 4:102}, 
    } 

现在,我想出了一个比较线路在其他的那些的numpers,并认为是彼此接近的那些程序。如果它找到属于第二行(具有密钥k)的第一行(具有关键字j)的数字,则它产生一个元组(j,k)。程序为除最后一行以外的每一行都执行此操作,所以最后我们将有(N-1)列元组。

C = [[(1,1),(2,2)], 
    [(1,1),(3,2),(4,3)], 
    ] 

现在我需要的是这个规则适用于我的字典d,所以在每行按键代表我收集计划中的信息,如果没有信息化,以填补零那个位置。我想要的结果看起来像这样:

D2 = {1:{1: 15, 2: 20, 3: 0, 4: 50, 5: 0, 6:100}, 
     2:{1: 14, 2: 21, 3: 25, 4: 0, 5: 75, 6: 0}, 
     3:{1: 16, 2: 0, 3: 24, 4: 0, 5: 74, 6:102}, 
    } 

我知道这应该是一个相当简单的问题,但我一直在努力,现在几个小时,我不能让我的头解决这个问题。问题是,如果我找到没有合作伙伴的号码,我需要在所有其他线路中递归占位符零。

编辑:你是正确的,我只是忘了字典中的键D.谢谢。然而问题仍然是一样的。

+8

'D'是'set',而不是发布的字典。由于字典不可散列,这将是一个错误。你忘了那里的钥匙。 –

+1

...或者你的意思是一个词典列表。 –

+0

我认为你应该多花点时间解释你打算做的事。 – Leonardo

回答

1

D实际上是set,如其中一条评论所表达的。要创建词典,您需要按以下方式指定Keyvalue

D = { 
    '1': {1: 15, 2: 20, 3: 50, 4:100}, 
    '2':{1: 14, 2: 21, 3: 25, 4: 75}, 
    '3': {1: 16, 2: 24, 3: 74, 4:102}, 
    }