これを行うことにより、辞書のリストからすべての値(特定のキーに対応するものを除く)を取得しようとしています:
fv = [[v for (k,v) in d.iteritems() if k is not 'xKey'] for d in someDict]
どこsomeDict
に似ています:
[{xKey:0.1,yKey:0.2,zKey:0.3},{yKey:0.9,xKey:0.7,zKey:0.4}...]
辞書には固有の順序がないことを知っています。しかし、私のリスト fv のリストは順番に値を持つ必要があります。キーでdictをソートしてから、今行ったことを実行することを考えています。しかし、それは動作することが保証されていますか?
使用がオプションであることは知ってOrderedDict
いますが、辞書には通常大量のデータが含まれるため、dict と比較してパフォーマンスが劣っているように見えます。
更新: 順番に値が必要だと言うとき、実際に並べ替える必要はありません。つまり、値のリストを毎回決まった決定論的順序で取得できる必要があるということです。上記の例では、私は常に [[0.2,0.3],[0.9,0.4]] を取得したいのですが、それ自体はソートされた順序ではない場合があります。並べ替えは 1 つの決定論的な順序を強制します。私が本当に気にかけているのは、最終的なリストで値の位置を維持することです。たとえば、yKey の値は常に各リストの最初の値でなければならず、zKey の値は常に各リストの 2 番目の値でなければなりません。 ykey、zkey などは辞書内の任意の順序である場合でも同様です。