按特定规则对字典进行排序

时间:2014-02-27 16:28:50

标签: python

我有一本字典(D)的dictionarys(D1..DN)。这些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与另一行的numpers进行比较,找到彼此接近的那些。如果它找到第一行(带有键j)的数字属于第二行中的数字(使用键k),则它产生一个元组(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.谢谢。然而问题仍然存在。

1 个答案:

答案 0 :(得分: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},
     }
相关问题