将元组与不按顺序的元素进行比较

Ani*_*mes 4 python dictionary tuples

我有两个 dicts 我正在将 bot 转换为 tuples 。两个 dict 都包含相同的元素,但它们不是使用相同的逻辑生成的。

例如,假设我有一个这样的元组:

(('a',5),('n',4),('c',8))
Run Code Online (Sandbox Code Playgroud)

第二个元组是这样的:

(('c',8),('n',4),('a',5))
Run Code Online (Sandbox Code Playgroud)

他们的原始字典是这样的(可能,我不知道字典中的元素将如何排序,但是它们是从包含相同元素的两个字典生成的(不多也不少):

{'a':5,'c': 8,'n':4}
Run Code Online (Sandbox Code Playgroud)

对于人类来说,两个元组是相似的,但对于计算机来说它们不是。

如何检查两个元组是否相似?

Moi*_*dri 5

对两者tuple进行排序并比较它们。例如:

>>> tuple_1 = (('a',5),('n',4),('c',8))
>>> tuple_2 = (('c',8),('n',4),('a',5))

# Non-sorted --> unequal; issue you are currently facing
>>> tuple_1 == tuple_2
False

# comparing sorted tuples -- equal 
>>> sorted(tuple_1) == sorted(tuple_2)
True
Run Code Online (Sandbox Code Playgroud)

如果两个元组的元素都是unique,您也可以使用setas比较它们:

>>> set(tuple_1) == set(tuple_2)
True
Run Code Online (Sandbox Code Playgroud)

作为一个侧面说明,你不必在转换dicttuple以字典的内容进行比较。您可以直接将dict对象比较为:

>>> {1: 2, 3: 4} == {3: 4, 1: 2}
True
Run Code Online (Sandbox Code Playgroud)