gpt4 book ai didi

Python 字典替换值

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

我正在尝试在 python 中测试字典。

第一种初始化方式有效,而第二种方式替换值。我不懂为什么。

#!/usr/bin/env python
BASIC_SCHEME = {'name': None}

workload_names=['a', 'b']
WORKLOAD_STRUCT ={k: {} for k in workload_names}
print ("without initialisation ", WORKLOAD_STRUCT)
WORKLOAD_STRUCT['a']['name'] = 'a'
WORKLOAD_STRUCT['b']['name'] = 'b'
print(WORKLOAD_STRUCT)

WORKLOAD_STRUCT = None


WORKLOAD_STRUCT ={k: BASIC_SCHEME for k in workload_names}

print ("with initialisation ", WORKLOAD_STRUCT)

WORKLOAD_STRUCT['a']['name'] = 'a'
WORKLOAD_STRUCT['b']['name'] = 'b'

print(WORKLOAD_STRUCT)

这是我的控制台的结果。

 python test.py
without initialisation {'a': {}, 'b': {}}
{'a': {'name': 'a'}, 'b': {'name': 'b'}}
with initialisation {'a': {'name': None}, 'b': {'name': None}}
{'a': {'name': 'b'}, 'b': {'name': 'b'}}

最佳答案

您的第二种方法创建了一个字典,其中包含所有指向同一对象的引用,即 BASIC_SCHEME。你想要的是每次都创建一个新的字典对象。您可以为此使用 .copy():

WORKLOAD_STRUCT ={k: BASIC_SCHEME.copy() for k in workload_names}

您应该了解的一些相关概念:

关于Python 字典替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56112711/

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