私の質問は、質問hereとは異なります。主に、辞書を含むコードの改善点を尋ねています。しかし、このリンクでは、私の次のステップになるメモリプロファイラについて説明しています。Pythonで辞書を最適化する
同じことを達成するために、次の2つのコードセットがあります。
まず1、
a={1: 'a', 2: 'b', 3: 'c', 4: 'd'}
b=[x for x in a if x in (1,2,3)]
b=['a', 'b', 'c']
2つ目、
a={1: 'a', 2: 'b', 3: 'c', 4: 'd'}
c=[a[x] for x in set(a.keys()) & set([1,2,3])]
b=['a', 'b', 'c']
私は1つのメモリの最適化方法の面でより良い働く知っていただきたいと思いますし、大量のデータセットのために。
ありがとうございます!
可能な複製(http://stackoverflow.com/questions/110259/which-python-memory -profiler-is-recommended) –
どちらもメモリ最適化の面でかなり悪いです。 Dictsはキーアクセス時の速度が特に速く、サブスクリプティングを使用して最速(かつ最も単純な)方法を避けています。私たちはいくつのキーを話していますか?あなたの例題を実行する最も速い方法は、 '' [a [1]、a [2]、a [3] 'または' [a [x] for(1、2、3)] ' –
'[x in a(x、1、2、3)in a x] 'が両方より高速です。 '(1,2,3)'が本当に大きければ、それを 'frozenset'としてあらかじめ計算し、' the_set.intersection(a) 'だけを実行することができます。 – Blender