私は以下のように処理しようとしているpythonで250KBの辞書リストを持っています。目的は辞書clean up
にあり、最後には繰り返し可能な値を返します。だから、私はこのようなものがあります:pythonで辞書(リスト)処理を高速化する
def check_qs(dict_list_in):
try:
del_id=[]
for i in dict_list_in:
tmp=i["get_url"][0]
if i["from"][0]=="var0":
try:
URLValidator()(tmp)
except:
del_id.append(i["id"])
elif i["from"][0]=="var1":
try:
URLValidator()(tmp.split("\"")[1])
except:
del_id.append(i["id"])
elif i["from"][0]=="var2":
try:
URLValidator()(tmp.split("\'")[1])
except:
del_id.append(i["id"])
else:
del_id.append(i["id"])
gc.collect()
result = filter(lambda x: x['id'] not in del_id,dict_list_in)
return result
except:
return dict_list_in
私は上記のやっている何を、いくつかの条件のTHSリスト内の各辞書をチェックして、このfails
場合、私はid
を取得し、それらの辞書の特定を削除するためにfilter
を使用しますリストから。
現時点では、実行には時間がかかります。欠けている明らかな最適化があるかどうかは疑問でした。私は現時点では、上記のコードはあまりにも素朴だと思う。
「qs」とは何ですか?私はあなたがそれを使用する前にあなたがそれを定義するのを見ることはありません –
[なぜ "例外:"良いプログラミングの練習を渡す "を読む?](//stackoverflow.com/q/21553327);ブランケット 'except:'を使わないでください。特定の例外をキャッチ*のみ*。 –
そうでない場合は、ここではストレートフォワードループがあります。これが遅い場合は、 'URLValidator()()'呼び出しであり、リスト処理ではありません。 **コンポーネントを個別に分離し、個別にパフォーマンスをテストするか、適切なプロファイラを使用してボトルネックを特定します。 –