python - 如何比较两个json文件而不考虑某个键

标签 python json dictionary comparison

我有两个 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 字典的样子:

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

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

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

最佳答案

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

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

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

关于python - 如何比较两个json文件而不考虑某个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51485879/

相关文章:

javascript - 使用 d3.geo.mercator 的气泡图

python - 如何在一本字典中找到在另一本字典中没有对应项的键?

python - 如何在 Python 中将自定义信息保存到 PNG 图像文件?

c# - Azure Function 不反序列化对象

php - JSON 结构不适用于 IE7 (JavaScript)

javascript - 如何动态生成 Blockly 下拉菜单的内容?

ios - 相同顺序索引 Swift 1.2 中的字典值和键

python - 如何让我的程序休眠 50 毫秒?

python - 查看正在运行的 Python 程序的方法

python - 如何忽略 beautifulsoup4 python 上的标签