如何更改字典中的一个字典值

2024-06-25 07:39:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行以下脚本的变体:

text1={'file1':0,'file2':0}
text2=['100-200','200-300','300-400']
text3=['1','2','3','4']
level1={}
level2={}
for i in text2:
    level1[i]=text1
for n in text3:
    level2[n]=level1
level2['3']['100-200']['file1']=level2['3']['100-200']['file1']+1

不幸的是,这改变了字典:

{'1': {'200-300': {'file2': 0, 'file1': 0}, '300-400': {'file2': 0, 'file1': 0}, '100-200': {'file2': 0, 'file1': 0}}, '2': {'200-300': {'file2': 0, 'file1': 0}, '300-400': {'file2': 0, 'file1': 0}, '100-200': {'file2': 0, 'file1': 0}}, '3': {'200-300': {'file2': 0, 'file1': 0}, '300-400': {'file2': 0, 'file1': 0}, '100-200': {'file2': 0, 'file1': 0}}, '4': {'200-300': {'file2': 0, 'file1': 0}, '300-400': {'file2': 0, 'file1': 0}, '100-200': {'file2': 0, 'file1': 0}}}

收件人:

{'1': {'200-300': {'file2': 0, 'file1': 1}, '300-400': {'file2': 0, 'file1': 1}, '100-200': {'file2': 0, 'file1': 1}}, '2': {'200-300': {'file2': 0, 'file1': 1}, '300-400': {'file2': 0, 'file1': 1}, '100-200': {'file2': 0, 'file1': 1}}, '3': {'200-300': {'file2': 0, 'file1': 1}, '300-400': {'file2': 0, 'file1': 1}, '100-200': {'file2': 0, 'file1': 1}}, '4': {'200-300': {'file2': 0, 'file1': 1}, '300-400': {'file2': 0, 'file1': 1}, '100-200': {'file2': 0, 'file1': 1}}}

如何只更改一个文件值而不是全部?你知道吗


Tags: 文件in脚本for字典变体file1收件人
1条回答
网友
1楼 · 发布于 2024-06-25 07:39:11

使用dict理解生成您的结构,其中循环表达式在每次迭代中进行求值:

level2 = {n: {i: {'file1':0,'file2':0} for i in text2}} for n in text3}

您没有创建字典的副本,只是存储对一个字典对象的引用。你知道吗

因此,每次存储text1时都创建了一个引用,而不是一个副本,每次引用level1时也是如此。你知道吗

相关问题 更多 >