gpt4 book ai didi

python - Dict.setdefault 插入排序到列表中

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:11 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以使用类似 lambda 的样式来附加到已排序的字典列表字段中。

示例:

a = {}
a.setdefault("foo", []).append(2)
a.setdefault("foo", []).append(1)
{'foo': [2, 1]}

有没有办法像使用 a["foo"].bisect.insort(a, -1) 那样按排序顺序插入,这样我之后不需要调用 sort 吗?

最佳答案

所有你需要的都在 Python 的标准库中:

import bisect
from collections import defaultdict


def add(dd, key, value):
bisect.insort_left(dd[key], value)


a = defaultdict(list)
add(a, "foo", 3)
add(a, "foo", 2)
add(a, "foo", 1)
add(a, "foo", 3)
add(a, "foo", 2)
add(a, "foo", 1)

assert a["foo"] == sorted(a["foo"])
print(a)

如果你想要一个 lambda:

add = lambda dd, key, value: bisect.insort_left(dd[key], value)

就性能而言,之后使用 sort 运行时应该比使用 bisect.insort_left 更快。在这两种情况下,运行时复杂度都是 O(n log n),但函数调用开销应该会导致不同的绝对运行时间。

关于python - Dict.setdefault 插入排序到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51982584/

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