私はDOIの大きなリストを持っており、繰り返されるDOIを識別する最も効率的な方法が必要です。 )DOIの配列は500,000 + DOIで構成されています。大きいリスト(500,000+)で重複を効率的に特定する
from collections import defaultdict
D = defaultdict(list)
for i,item in enumerate(doiList):
D[item].append(i)
D = {k:v for k,v in D.items() if len(v)>1}
print (D)
これを行うには、より多くの処理効率的な方法があります:私の現在のアプローチは、この(inspired by this answer)はありますか?
サンプルDOI一覧:
doiList = ['10.1016/j.ijnurstu.2017.05.011 [doi]','10.1016/j.ijnurstu.2017.05.011 [doi]' ,'10.1167/iovs.16-20421 [doi]', '10.1093/cid/cix478 [doi]', '10.1038/bjc.2017.133 [doi]', '10.3892/or.2017.5646 [doi]', '10.1177/0961203317711009 [doi]', '10.2217/bmm-2017-0087 [doi]', '10.1007/s12016-017-8611-x [doi]', '10.1007/s10753-017-0594-5 [doi]', '10.1186/s13601-017-0150-2 [doi]', '10.3389/fimmu.2017.00515 [doi]', '10.2147/JAA.S131506 [doi]', '10.2147/JAA.S128431 [doi]', '10.1038/s41598-017-02293-z [doi]', '10.18632/oncotarget.17729 [doi]', '10.1073/pnas.1703683114 [doi]', '10.1096/fj.201600857RRR [doi]', '10.1128/AAC.00020-17 [doi]', '10.1016/j.jpain.2017.04.011 [doi]', '10.1016/j.jaip.2017.04.029 [doi]', '10.1016/j.anai.2017.04.021 [doi]', '10.1016/j.alit.2017.05.001 [doi]']
どのくらいの繰り返しが必要ですか? 10%がリピート、または50%または90%がリピートになりますか? –
@AustinHastings 15〜60%の間で変化します – scutnex
最も効率的な処理は賢明ですか、またはメモリが賢明ですか?あなたはトレードオフをしなければならないでしょう... – zwer