私は同じ最初の値を持つすべての要素を削除する必要がPythonのソートされていないリストから部分的な重複を削除するにはどうすればよいですか?
[[1,.., ..],[2,...,...],[5,...,...],[1,...,...]]
大規模なリストを持っています。 (一度だけ保つ)
これを最も効率的に行うには?
私は同じ最初の値を持つすべての要素を削除する必要がPythonのソートされていないリストから部分的な重複を削除するにはどうすればよいですか?
[[1,.., ..],[2,...,...],[5,...,...],[1,...,...]]
大規模なリストを持っています。 (一度だけ保つ)
これを最も効率的に行うには?
これまでに見た最初の値のset
を維持し、最初の値がセットにない場合はサブリストのみを保持します。
set.add
は常にNone
を返すので、keys.add(sublist[0]) or sublist
はsublist
と同じであるNone or sublist
と同じであるので、それはあなたがリストの内包内のセットに値を追加できるようにしながら、リストに保存されますどのような影響を与えません。リストの順序は重要ではありません場合は
keys = set()
biglist = [keys.add(sublist[0]) or sublist
for sublist in biglist
if sublist[0] not in keys]
del keys # if you don't need it any more
、あなたはこれを試すことができます。
dict([(sublist[0], sublist) for sublist in biglist]).values()
または
dict([(sublist[0], sublist) for sublist in reversed(biglist)]).values()
違いは、第1のための最初のリストを返すということです同じ最初の値、もう一方の値は反対です。
うわー、それはかなり良い答えです、それは動作します。私はそれを理解するのに数分を要した。説明ありがとう – siamii