順序は重要ではないが、コレクション内の重複値の存在が重要なアイテムの重複コレクションを見つける必要があるという奇妙な問題があります。たとえば、次のリストのリストがあるとします。
lol = [
['red'],
['blue', 'orange'],
['orange', 'red'],
['red', 'orange'],
['red', 'red'],
['blue', 'orange', 'red'],
['red', 'orange', 'blue']
]
私の場合、一意のコレクションは次のようになります。
unique_lol = [
['red'],
['blue', 'orange'],
['orange', 'red'],
['red', 'red'],
['blue', 'orange', 'red']
]
そして、私が取得しようとしている情報は重複リストです:
dup_lol = [
['orange', 'red'],
['blue', 'orange', 'red']
]
['orange', 'red']
どの重複が重複として報告されるか、つまりvsは気にしません['red', 'orange']
。重複した組み合わせが報告されるだけです。私は最初に一連のfrozensetsを使用しようとしました:
sofs = {frozenset(x) for x in lol}
ただし、このアプローチは['red', 'red']
リストによってつまずき、次のように変換され['red']
ます。
set([frozenset(['red']),
frozenset(['orange', 'red']),
frozenset(['blue', 'orange', 'red']),
frozenset(['blue', 'orange'])])
さらに、これは重複ではなく、一意のものだけを提供し、とにかくリストのリストに対して違いを実行することはできません。
親リストのブルートフォーススタイルを反復できると確信していますが、単純なものが欠けているように感じます。キーが順序付けられたリストであり、値がその組み合わせが出現する回数である辞書がほとんど必要ですが、リストは辞書のキーになることはできず、とにかく奇妙に聞こえます。