にソート適用するので、Pythonドキュメントは、複雑なデータ型にsorted
を適用するときにoperator
モジュールからitemgetter
、attrgetter
、またはmethodgetter
を使用することを提案しています。さらに、iterators
は、大きいサイズのオブジェクトのリストより小さく、速くなります。のPython 3.5 OrderedDict:ネストされた辞書のイテレータ
したがって、OrderDict
の値にiterator
を作成する方法が不思議です。その理由は、私がすべての値を並べ替えることを望むのは、(規則的な)辞書でもあるからです。通常の辞書用
、一つはでこれを行うことができます。しかし
sorted(my_dict.itervalues(), key=itemgetter('my_key'))
OrderedDict
のみOrderedDict
キー上で動作する方法__iter__()
を持っているようです。
OrderedDict
の値のイテレータを効率的に作成するにはどうすればよいですか。
リストの理解度、ラムダ関数、または関連するサブキー(辞書内のキー(値))をOrderedDict
の値で抽出するのではありません。
sorted (my_dict, key= lambda key: my_dict[key]['my_key'])
ネストされた例:
test = OrderedDict({'a': {'x':1, 'y':2, 'z':3},
'b': {'x':1, 'y':2, 'z':3}
})
これは本当にPython 3の場合、 'dict.values()'は* iterableであるため、 'itervalues()'は必要ありません。 Python 3では、 'dict.itervalues()' *は存在しません*。 –
@MartijnPieters 'OrderedDict.values'は' class odict_values'型です – SumNeuron
あなたはOrderedDictのサンプルを持っていますか? – user312016