不知是否可以实现在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