不知是否可以實現在Python以下:返回基於用於獲得這些字典鍵字典的排序迭代
我有一個嵌套的字典nested_dict
,其中每個三元素的元組映射(a, b, c)
到子字典sub_dict
,我有包含所有對應於第二元件的元件彼此列表list_b
(即,一種通過b
表示)在上面的元組密鑰。
鑑於nested_dict
和list_b
,以及一個固定的對a
和c
(即,第一和分別元組鍵,第三元件),我想在子字典得到排序迭代基於形成元組鍵的一部分,換句話說,通過使用這個迭代中list_b
元件,我可以通過返回的子字典這樣迭代:
nested_dict[(a, b_1, c)], nested_dict[(a, b_2, c)], nested_dict[(a, b_3, c)], ...
wher E,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))
但這樣做總是由b
順序在nested_dict[(a, b, c)]
返回一個迭代器?如果是這樣,是否有更有效的方式(意味着更快的代碼)實現相同?
通過「更好」,你在尋找「更高效」,「比較容易理解,而無需意見」,「更地道」,或「少/漂亮代碼」?你有什麼可以工作,而且這對我來說並不糟糕。它可能會更清晰,但更多的代碼來定義一個只生成值的sorted_dict_generator,而不是一個返回生成值的生成器的sorted_dict_itr。它可能(取決於你的大用例)更有效地保留b的排序集合,而不是每次排序list_b。還有要進行很多其他類似的評論,但不知道更多... – abarnert
@abarnert,感謝您的意見。更好的是,我主要是指代碼的效率。除了你已經提到的'已分類收集'以外,這方面有什麼改進? – MLister