类型错误:在两个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)]