gpt4 book ai didi

python - 根据用于获取这些字典的键返回字典的排序迭代器

转载 作者:行者123 更新时间:2023-12-01 06:00:00 24 4
gpt4 key购买 nike

我想知道是否可以用Python实现以下功能:

我有一个嵌套字典 nested_dict ,映射每个三元素元组 (a, b, c)到子词典sub_dict ,我还有另一个 list list_b包含与上面元组键中的第二个元素(即 b 表示的元素)对应的所有元素。

给定nested_dictlist_b ,以及一对固定的 ac (即分别是元组键的第一个和第三个元素),我想根据 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 的顺序?如果是这样,是否有更有效的方法(意味着更快的代码)来实现相同的目标?

最佳答案

是的,它有效。

保留已排序的集合来代替保留 list_b 并对其进行动态排序将提高效率,但当然它可能会降低其他更重要的地方的效率。

没有其他方法可以提高算法复杂性 - 字典查找是恒定时间的,并且迭代列表与迭代任何东西一样快。

通过避免以各种不同方式对每个(a、b、c)元组进行散列的需要,您也许可以通过一个小的常数因子来加快速度,但我怀疑这会产生很大的差异。

您可以通过与变量范围相关的各种微优化来加快一些操作码的速度,无论是产生值还是返回生成器,但很难想象这会重要。

关于python - 根据用于获取这些字典的键返回字典的排序迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10902987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com