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 に答える