gpt4 book ai didi

python: dict 作为另一个 dict 的原型(prototype)/模板 - std.lib 解决这个问题的方法?

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:41 24 4
gpt4 key购买 nike

我正在寻找一种方法来创建字典的多个临时副本以保存一些“进化状态”,只有轻微的世代偏差,并找到了这个小原型(prototype)字典:

class ptdict(dict):
def asprototype(self, arg=None, **kwargs):
clone = self.__class__(self.copy())
if isinstance(arg, (dict, ptdict)):
clone.update(arg)
clone.update(self.__class__(kwargs))
return clone

基本上我想要smth。喜欢:

generation0 = dict(propertyA="X", propertyB="Y")
generations = [generation0]

while not endofevolution():
# prev. generation = template for next generation:
nextgen = generations[-1].mutate(propertyB="Z", propertyC="NEW")
generations.append(nextgen)

等等。

我在想,这门课的作者和我是否遗漏了什么,因为我无法想象,没有标准库方法可以解决这个问题。但是集合和 itertools 似乎都没有提供类似的简单方法。

可以用 itertools.tee 完成这样的事情吗?

更新:这不是复制和更新的问题,因为这正是 ptdict 正在做的事情。但是使用 update 不会返回字典,而 ptdict 会返回字典,因此我可以例如链接结果或进行就地测试,这会大大提高可读性。 (我提供的示例可能有点微不足道,但我不想与大矩阵混淆。)

我很抱歉不够精确。也许下面的示例阐明了为什么我有兴趣通过单个复制/更新步骤获取字典:

nextgen = nextgen.mutate(inject_mutagen("A")) if nextgen.mutate(inject_mutagen("A")).get("alive") else nextgen.mutate(inject_mutagen("C"))

最佳答案

我猜你正在寻找这样的东西:

first = {'x':1, 'y':100, 'foo':'bar'}
second = dict(first, x=2, y=200) # {'y': 200, 'x': 2, 'foo': 'bar'}

参见 dict

关于python: dict 作为另一个 dict 的原型(prototype)/模板 - std.lib 解决这个问题的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469121/

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