Python 如何在不考虑某个键的情况下比较两个json文件

Python 如何在不考虑某个键的情况下比较两个json文件,python,json,dictionary,comparison,Python,Json,Dictionary,Comparison,我有两个json文件,每个文件都是字典的形式。我想比较它们,但这样做时忽略“ver”键。我已经研究了以下问题,并将答案作为我的功能实现: 但是,当比较两个仅在“ver”键中存在差异的文件时,函数仍返回false def compare_json(file_1, file_2, ignore_key): ignored = set(ignore_key) for k1, v1 in file_1.iteritems(): if k1 not in ignored a

我有两个json文件,每个文件都是字典的形式。我想比较它们,但这样做时忽略“ver”键。我已经研究了以下问题,并将答案作为我的功能实现:

但是,当比较两个仅在“ver”键中存在差异的文件时,函数仍返回false

def compare_json(file_1, file_2, ignore_key):
    ignored = set(ignore_key)
    for k1, v1 in file_1.iteritems():
        if k1 not in ignored and (k1 not in file_2 or file_2[k1] != v1):
            return False

    for k2, v2 in file_2.iteritems():
        if k2 not in ignored and k2 not in file_1:
            return False

    return True



if not compare_json(data, latest_file, ('ver')):
        print 'not equal'
        data['ver'] += 1
        ver_number = data['ver']
        with open(('json/{0}.v{1}.json').format(name, ver_number)) as new_json:
            json.dump(data, new_json)
    else:
        print 'equal'
下面是打印json dict的过程:

{'ver': 1, 'data': 0}

{'ver': 2, 'data': 0}
比较以上结果应返回true;但是,它返回false。当我将版本号更改为相同的数字时,它返回true

('ver')
更改为
('ver',)

('ver')
不是元组,它只是括号中的
'ver'
。分别,
set(('ver'))
{'e'、'r'、'v'}
,它们是函数忽略的键,但不是要忽略的键

相反,
('ver',)
是一个单元素元组,
集('ver',)
{'ver'}