我认为这一定已经得到了回答,但我在谷歌或这里找不到任何东西。
我知道,一般来说,您不能依赖 Python 字典的顺序。但是,如果您有两个具有相同键的字典,您是否也可以依赖于相同顺序的值?
我问是因为我正在尝试比较两个浮点数字典,所以我不能使用dict1==dict2
. 我的函数看起来像这样:
def _compare_dict(self, d1, d2):
"""
Compares two dictionaries of floating point numbers
for equality.
"""
if d1.keys() != d2.keys():
return False
zipped = zip(d1.itervalues(), d2.itervalues())
return len(filter(lambda x: abs(x[0] - x[1]) > sys.float_info.epsilon, zipped)) == 0
这是一个危险的游戏吗?在一项测试中,该命令似乎成立:
In [126]: d1={'a': 3, 'b': 2, 'c': 10}
In [127]: d2={'b': 10, 'c': 7, 'a': 2}
In [128]: d1
Out[128]: {'a': 3, 'b': 2, 'c': 10}
In [129]: d2
Out[129]: {'a': 2, 'b': 10, 'c': 7}
但我不知道这是否是我可以指望的。当然,也欢迎其他用于比较两个浮点数字典的解决方案。