python判断两个字典是否相等_关于python:断言两个字典几乎相等

本文探讨了如何在Python中断言两个字典几乎相等,特别是在涉及浮点数比较时。通过引入自定义的`assertDeepAlmostEqual`函数,可以递归比较字典内容,并使用`unittest.TestCase.assertAlmostEqual`进行数值比较。示例展示了如何使用这个函数来测试不同级别的字典相等性。
摘要由CSDN通过智能技术生成

我试图断言两个字典几乎相等,但是我似乎做不到。

这是一个例子:

>>> import nose.tools as nt

>>> nt.assert_dict_equal({'a' : 12.4}, {'a' : 5.6 + 6.8})

Traceback (most recent call last):

File"", line 1, in

File"/usr/lib/python2.7/unittest/case.py", line 838, in assertDictEqual

self.fail(self._formatMessage(msg, standardMsg))

File"/usr/lib/python2.7/unittest/case.py", line 413, in fail

raise self.failureException(msg)

AssertionError: {'a': 12.4} != {'a': 12.399999999999999}

- {'a': 12.4}

+ {'a': 12.399999999999999}

我希望这样通过:

>>> nt.assert_almost_equal(12.4, 5.6 + 6.8)

我希望我缺少诸如nt.assert_almost_dict_equal之类的简单内容,或者可能有一个参数可以传递给nt.assert_dict_equal,该参数指定浮点应该接近的程度,但是我什么也找不到。

当然,我可以遍历字典并使用nt.assert_almost_equal分别比较值; 但是,就我而言,字典更为复杂,因此我希望避免这种情况。

断言两个词典几乎相等的最佳方法是什么?

我认为您需要自己迭代并比较这些值。 assert_almost_equal仅提供可直接计算其差的数字类型。

如果您发现需要自己动手,请在此处查看" assertDeepAlmostEqual":github.com/larsbutler/oq-engine/blob/master/tests/utils/

@dano,很有趣。

@dano的评论回答了我的问题:

我从dano提供的链接中复制了一个函数

import unittest

import numpy

def assertDeepAlmostEqual(test_case, expected, actual, *args, **kwargs):

"""

Assert that two complex structures have almost equal contents.

Compares lists, dicts and tuples recursively. Checks numeric values

using test_case

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值