python - 如果我在子词典中有特定的唯一值,如何断言?

标签 python python-2.7 python-3.x dictionary

dictionary = {'key01' : {'value_a': 1, 'value_b': 4, 'value_c': 1, 'value_d': 1},
            'key02' : {'value_a': 2, 'value_b': 5, 'value_c': 2, 'value_d': 6},
            'key03' : {'value_a': 3, 'value_b': 6, 'value_c': 2, 'value_d': 9}}

与其他 value_a 相比,每个 value_a 必须是唯一的。
每个 value_b 与其他 value_b 相比必须是唯一的。
每个 value_c 与其他 value_c 相比必须是唯一的。
等等……

即如果 dictionary['key01']['value_a'] 为 1,则该值不能再次出现在 dictionary['key02']['value_a']字典['key03']['value_a']

我需要为此编写一个pytest-assert!

在这个例子中,有一个错误,因为 dictionary['key02']['value_c']dictionary['key03']['value_c'] 是相等的.

最佳答案

给你:

dictionary = { 'key01': { 'value_a': 1, 'value_b': 4, 'value_c': 1, 'value_d': 1 },
               'key02': { 'value_a': 2, 'value_b': 5, 'value_c': 2, 'value_d': 6 },
               'key03': { 'value_a': 3, 'value_b': 6, 'value_c': 2, 'value_d': 9 } }

for key_first, key_second in itertools.combinations(dictionary, 2):
    for internal_key in dictionary[key_first].keys():
        if internal_key not in dictionary[key_second]:
            continue
        assert dictionary[key_first][internal_key] != dictionary[key_second][internal_key], \
            "Values in dictionary should be unique for the same keys!\n" + \
            "Invalid keys are " + key_first + " and " + key_second + "\n" + \
            "for values of " + internal_key

一开始可能会令人困惑,但它的作用是:

  1. 遍历字典中的每个键并将它的值与其他键的值进行比较(但不与自身进行比较),
  2. 比较内部字典中所有键的值,如果它们都存在于它们中,
  3. 如果任何键的值相等,则抛出 AssertionError。

您可以通过在开头添加以下内容来将该解决方案包装在一个函数中:

def test_unique_values(dictionary: dict):

关于python - 如果我在子词典中有特定的唯一值,如何断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37980506/

相关文章:

python - 如何从位于不同模块的两个类中选择一个

python - SFTP到远程机器,切换到root并在远程机器上执行命令

python - 如何通过python中的beautiful soup在html页面中找到特定的单词?

python - 按行填充 numpy 数组

python - 如何过滤 Pandas 数据框中按索引分组的重复行?

如果压缩扩展名不是 "gzip",则 Python ".gz"模块行为异常

python - 如何在 python 中对 datetime.timedelta 执行除法?

Django 管理日志条目 : how it works in non admin actions?

python - 如何使用 python 的标准库 zipfile 检查 zip 文件是否加密?

python - 使用 macports 安装 python 3.6 后,将 python 与终端一起使用时出错