次のようなネストされたリストがあります。
>>l = [[['bcsA', 'F'], ['bcsB', 'F'], ['bcsC', 'R']], [['bcsE', 'R'], ['bcsF', 'R']]]
>>n = [['GROUP A'], [[['bcsQ', 'F'], ['bcsA', 'F'], ['bcsB', 'F'], ['bcsZ', 'F'], ['bcsC', 'F']], [['yhjK', 'R']], [['yhjK', 'F']], [['bcsC', 'R'], ['bcsZ', 'R'], ['bcsB', 'R'], ['bcsA', 'R'], ['bcsQ', 'R']], [['bcsC', 'F'], ['bcsZ', 'F'], ['bcsB', 'F'], ['bcsA', 'F'], ['bcsQ', 'F']]]],
[[['GROUP A'], [[['bcsA', 'F'], ['bcsB', 'F'], ['bcsC', 'R']], [['bcsE', 'R'], ['bcsF', 'R']], [['yhjK', 'F']]]],
したがって、私が望んでいたのは、ネストされたリスト[['bcsA', 'F'], ['bcsB', 'F'], ['bcsC', 'R']]
と[['bcsE', 'R'], ['bcsF', 'R']]
が他のネストされたリストの同じリストで見つかった場合、最初のエントリが得られることです。
出力は、うまくいけば、 になりますGROUP B
。
リストl
は、プログラムを実行するたびに異なります。
私はたくさんのバリエーションを試しました:
>>>for x in n:
>>> if all(e in x for e in l):
>>> print n[n.index(x)][0]
ネストされたリスト内の個々のアイテムl
がどこかにn
ある場合、それらがグループAにあることがわかりますが、実際には出力はグループBである必要がありall()
ます。ステートメントなしでも試しました。これは簡単なことのように感じますが、理解できません。これが理にかなっていることを願っています。助けてくれてありがとう!
tl;dr: リストのすべての値がネストされたリストに含まれているかどうかを確認する方法と、含まれている場合は、ネストされたリストの最初のエントリを出力する方法。