Pythonで次のことを実現できるかどうか疑問に思います。
ネストされたディクショナリnested_dict
があり、各3要素タプル(a, b, c)
をサブディクショナリにマップします。また、上記のタプルキーの2番目の要素(つまり、で示される要素)に対応するすべての要素を含むsub_dict
別のリストがあります。list_b
b
nested_dict
と、およびとのlist_b
固定ペア(つまり、それぞれタプルキーの1番目と3番目の要素)が与えられた場合、その一部を形成する要素に基づいて、サブディクショナリに対してソートされたイテレータを取得したいと思います。タプルキー、つまり、このイテレータを使用することで、次のように返されたサブディクショナリを反復処理できます。a
c
list_b
nested_dict[(a, b_1, c)], nested_dict[(a, b_2, c)], nested_dict[(a, b_3, c)], ...
ここでb_1 < b_2 < b_3 ...
、それぞれb_i
がlist_b
私はこの線に沿って考えています:
def sorted_dict_itr (nested_dict, list_b, a, c):
return (nested_dict[(a, b, c)] for b in sorted(list_b))
しかし、これは常にイテレータをnested_dict[(a, b, c)]
次の順序で返しますb
か?もしそうなら、同じことを達成するためのより効率的な方法(より高速なコードを意味する)はありますか?