如何比较忽略某个键的两个json文件

2024-03-29 12:57:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个json文件,每一个都是字典的形式。我想比较它们,但在这样做时忽略“ver”键。我看了下面的问题并将答案实现为我的函数:Compare dictionaries ignoring specific keys

但是,当比较两个只有“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 dicts的样子:

^{pr2}$

比较上面的值应该返回true;但是返回false。当我将版本号更改为相同的数字时,它返回true。在


Tags: 文件函数injsonfalsedatareturnif
1条回答
网友
1楼 · 发布于 2024-03-29 12:57:40

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

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

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

相关问题 更多 >