0

我有这本字典:

d= {'1': {         '2': 1,  '3': 0,  '4': 0, '5': 1,  '6': 29 }
   ,'2': {'1': 13,          '3': 1,  '4': 0, '5': 21, '6': 0  }
   ,'3': {'1': 0,  '2': 0,           '4': 1, '5': 0,  '6': 1  }
   ,'4': {'1': 1,  '2': 17, '3': 1,          '5': 2,  '6': 0  }
   ,'5': {'1': 39, '2': 1,  '3': 0,  '4': 0,          '6': 14 }
   ,'6': {'1': 0,  '2': 0,  '3': 43, '4': 1, '5': 0           }
   }

我想编写一个函数,它返回所有值都<2(小于2)的列。

到目前为止,我已经把字典变成了一个列表,然后尝试了很多没有用的东西……我知道答案是第 4 列。

这是我最近的尝试:

    def findFirstRead(overlaps):
        e= [[d[str(i)].get(str(j), '-') for j in range(1, 7)] for i in range(1, 7)]
        nested_list = e
        for i in map(itemgetter(x),nested_list):
            if i<2:
                return x+1
            else:
                continue

...这是非常错误的

4

1 回答 1

5

以下集合和列表推导列出了该列的最大值为 2 的列:

columns = {c for r, row in d.iteritems() for c in row}

[c for c in columns if max(v.get(c, -1) for v in d.itervalues()) < 2]

这返回['4']

于 2013-01-03T21:16:01.227 回答