在Python3中的另一个dictional中添加带有静态键的dictional

2024-09-30 06:32:26 发布

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

我想用另一个有固定键的听写器做一个听写器

dic1 = {'filename':'file1','namelen':'5'}
dic2 = {
"file1":dic1,
"file2":dic2,
...
...
}

我的代码的问题是添加一个新的听写器会覆盖所有现有的内部听写器

dic1 ={}
dic2 ={}
file_list = ["file1","file2", "file3"]
for file in file_list:
 dic1["filename"] = file
 dic1["namelen"] = len(file)
 dic2[file] = dic1
print(dic2)

我的口述是这样的

    dic2 = 
{
'file1': {'namelen': 5, 'filename': 'file3'}, 
'file3': {'namelen': 5, 'filename': 'file3'}, 
'file2': {'namelen': 5, 'filename': 'file3'}
} 

如何在不切换到列表的情况下防止覆盖


Tags: 代码inforlenfilenamefile1listfile2
3条回答

添加字典的副本,而不是字典本身

这一行:

dic2[file] = dic1

更改:

dic2[file] = dic1.copy()

您可以在for中使用一行python代码来实现您的结果

dic ={}
file_list = ["file1","file2", "file3"]
for file in file_list:
    dic[file] = { "filename": file, "namelen": len(file) }
print(dic)

输出

{
   'file1': {'filename': 'file1', 'namelen': 5}, 
   'file2': {'filename': 'file2', 'namelen': 5}, 
   'file3': {'filename': 'file3', 'namelen': 5}
}

试着这样做:

dic2 ={}
file_list = ["file1","file2", "file3"]
for f in file_list:
 dic1 ={}

 dic1["filename"] = f
 dic1["namelen"] = len(f)
 dic2[f] = dic1
print(dic2)

每次迭代都尝试在循环中创建一个新的dict1={}

否则,如果在循环之外执行,它将一次又一次地引用同一个字典

相关问题 更多 >

    热门问题