【发布时间】:2020-07-14 15:04:46
【问题描述】:
我有一个字典,假设有 n 行,其中每一行我有一堆值和元组作为键。像这样的:
a = {(-1,2):40, (4,5):10, (-6,1):20, (2,-3):30, ...}
现在假设我有另一本这样的字典:
b = {(4,5):10, (-6,1):20, (-1,2):40, (2,-3):30, ...}
所以基本上b 是a 但元素的顺序不一样。问题是我想不出一个好方法来检查这个。我不能使用集合作为键并快速确认a == b,如果我将元组作为键然后a == b is false,因为订单被打乱了。我试过tuple(set())他们,也没有用。所以我正在考虑将键保留为tuple(set()),在中间步骤中对它们进行“untuple”,检查并将它们元组返回。我认为解包在这里没有帮助,因为我不想混合元组中的内容,例如 (4,5,-6,1,...) 我最终想要做的是看看我是否已经有了我字典中的这种元组组合,无论元素如何排序。
如果我不能说清楚,请告诉我, 我是编程菜鸟,所以是的, 谢谢。
【问题讨论】:
-
字典比较从未使用键的顺序。
{1:2, 3:4} == {3:4, 1:2}。在 Python 3 中,{1:2, 3:4}.keys() == {3:4, 1:2}.keys()也是如此,因为keys方法不返回列表。 -
您能提供一些预期的输出示例吗?假设您有
is_equal(dict_a, dict_b),那么相同的组合键但不同的值将是什么输出?
标签: python dictionary set tuples