Python社区  »  Python

在python 3的另一个dictional中添加带静态键的dictional

3lokh • 1 周前 • 19 次点击  

我想用另一个有固定键的听写,例如

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'}
} 

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54677
 
19 次点击  
分享到微博
文章 [ 3 ]  |  最新文章 1 周前
Gaurav Shimpi
Reply   •   1 楼
Gaurav Shimpi    1 周前

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

输出:

{
     'file1': {'filename': 'file1', 'namelen': 5},
     'file2': {'filename': 'file2', 'namelen': 5},
     'file3': {'filename': 'file3', 'namelen': 5}
}
Shubham Shaswat
Reply   •   2 楼
Shubham Shaswat    1 周前

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={} 圈内

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

Austin
Reply   •   3 楼
Austin    1 周前

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

这一行:

dic2[file] = dic1

更改为:

dic2[file] = dic1.copy()