类型错误:在两个dict中减去值时,python中的dict不可损坏
当我这样做时,它给出了类型错误:在两个dict中减去值时,python中的dict不可损坏,python,Python,当我这样做时,它给出了类型错误:不可损坏的类型:“dict” 要求-从修改的文件列表['dir']中,我们应该只减去状态总和为0的文件。每次密钥名称状态都可能不同 例如:('file2.txt',10282020,{data:{'status3':0,'status4':0}) 状态3和状态4之和为零,因此我们可以减去这些文件,而不是将它们插入“文件修改” 但是对于('file1.txt',10282020,{data:{'status1':1,'status2':0}})sum不是零,那么在进
类型错误:不可损坏的类型:“dict”
要求-从修改的文件列表['dir']中,我们应该只减去状态总和为0的文件。每次密钥名称状态都可能不同
例如:('file2.txt',10282020,{data:{'status3':0,'status4':0})
状态3和状态4之和为零,因此我们可以减去这些文件,而不是将它们插入“文件修改”
但是对于('file1.txt',10282020,{data:{'status1':1,'status2':0}})
sum不是零,那么在进行减法时应直接将其插入“file_to_modify”中
所有文件列表['dir']包含文件名和文件修改时间。和wise MODIFED file list类似,wise MODIFED file list包含文件名、文件修改时间和状态dict,如前所示。所以我想在文件名和文件修改时间的基础上减去。因此,如果相同的文件名再次到达,它将有不同的修改时间,所以我们应该考虑文件和插入文件中的修改。 预期产量-
file_to_modify=[('file1.txt',10282020,{“数据”:{'status1':1,'status2':0}),('file3.txt',10282020,None)]你必须处理更多的数据,你不能只这样使用它
- 临时
访问所有文件\u目录
所有文件\u列表的数据
- 临时
访问修改的\u文件\u目录
修改的\u文件\u列表的数据
所有文件\u dict
,并使用修改的文件\u dict
的数据来决定是否保留它
all_files_list = {}
all_files_list['dir'] = [
('file1.txt', 10282020),
('file2.txt', 10282020),
('file3.txt', 10282020)]
modified_file_list = {}
modified_file_list['dir'] = [
('file1.txt', 10282020, {data : {'status1' : 1, 'status2' : 0}}),
('file2.txt', 10282020, {data : {'status3' : 0, 'status4' : 0}}),
(None, None, None)]
file_to_modify = list(set(all_files_list['dir']) - set(modified_file_list['dir']))
所有文件列表['dir']包含文件名和文件修改时间。和wise MODIFED file list类似,wise MODIFED file list包含文件名、文件修改时间和状态dict,如前所示。所以我想在文件名和文件修改时间的基础上减去。因此,如果相同的文件名再次到达,它将有不同的修改时间,所以我们应该考虑文件和插入文件FielthtoMyFuffy预期输出-FielyToMexely= [(Fiel1.Txt),10282020,{“data”:{'Stase1':1,'Stass2':0 }),('Fiel3.txt,10282020,NO)]这应该起作用,让我在我的实际代码中试试这个。谢谢:)
all_files_list = {
'dir': [('file1.txt', 10282020),
('file2.txt', 10282020),
('file3.txt', 10282020)]}
modified_file_list = {
'dir': [('file1.txt', 10282020, {"data": {'status1': 1, 'status2': 0}}),
('file2.txt', 10282020, {"data": {'status3': 0, 'status4': 0}}),
(None, None, None)]}
all_files_dict = dict(all_files_list['dir'])
modified_files_dict = {x[0]: x[1:] for x in modified_file_list['dir'] if x[0]}
file_to_modify = []
for filename, vals in all_files_dict.items():
if filename in modified_files_dict:
sum_status = sum(modified_files_dict[filename][1]['data'].values())
if sum_status == 0:
continue
file_to_modify.append((filename, vals, modified_files_dict.get(filename, [None, None])[1]))
print(file_to_modify)
# [('file1.txt', 10282020, {"data": {'status1': 1, 'status2': 0}}), ('file3.txt', 10282020, None)]