在 python 3 中的另一个字典中添加带有静态键的字典
Adding dictonary with static keys inside another dictonary in python 3
我想用另一个有固定键的字典制作一个字典,例如
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'}
}
如何在不切换到列表的情况下防止覆盖?
添加字典的副本而不是字典本身。
这一行:
dic2[file] = dic1
更改为:
dic2[file] = dic1.copy()
试试这个方法:
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={}
否则,如果你在循环外做,它会一次又一次地引用同一个字典
这可能有用。
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}
}
您可以在 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}
}
我想用另一个有固定键的字典制作一个字典,例如
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'}
}
如何在不切换到列表的情况下防止覆盖?
添加字典的副本而不是字典本身。
这一行:
dic2[file] = dic1
更改为:
dic2[file] = dic1.copy()
试试这个方法:
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={}
否则,如果你在循环外做,它会一次又一次地引用同一个字典
这可能有用。
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}
}
您可以在 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}
}