私は2つの辞書のリストを持っています。Pythonで辞書の2つのリストの間で共通の要素を検索する最速の方法
list1 = [{'user_id':23, 'user_name':'John', 'age':30},
{'user_id':24, 'user_name':'Shaun', 'age':31},
{'user_id':25, 'user_name':'Johny', 'age':32}]
list2 =[{'user_id':23},
{'user_id':25}]
は今、私は私のlist1
は、数百万行が含まれている可能性があるため、出力
list3 = [{'user_id':23, 'user_name':'John', 'age':30},
{'user_id':25, 'user_name':'Johny','age':32}]
は、私が最も効率的な方法を望んで欲しいです。
十分速くないものを試しましたか? – Ryan
[this](https://stackoverflow.com/questions/382466/comparing-massive-lists-of-dictionaries-in-python)または[this](https:// stackoverflow。com/questions/9845369/comparison-2-lists-consisting-of-unique-keys-in-python)を使用しています。彼らは十分に速くなかったのですか?これを実装しようとしましたが、パフォーマンスの問題がありましたか? – idjaw
'list1'のスキャンを1回だけ行う必要がある場合は、Jean-FrançoisFabreの戦略を使用する必要があります。しかし、複数回検索する必要がある場合は、omri_saadonの回答に従って、リストをdictに変換することを真剣に検討する必要があります。この新しいdictの内部アイテムにdictsを使用するのではなく、タプルまたは名前付きタプルを使用した場合はRAMを節約します。 –