📜  Python|在字典中查找对称对

📅  最后修改于: 2022-05-13 01:55:22.069000             🧑  作者: Mango

Python|在字典中查找对称对

有时,在使用Python字典时,可能会遇到一个问题,即希望获得对称的键值对,即具有相同值的键值对,而不管事实值是键还是值。让我们讨论可以执行此任务的某些方式。

方法#1:使用生成器+循环

通过在运行时产生匹配的键值对的值,可以使用循环和生成器以蛮力方法解决此任务。

# Python3 code to demonstrate working of
# Find Symmetric Pairs in dictionary
# using generator + loop
  
# generator function to perform task
def find_sym_pairs(test_dict):
    for key in test_dict.keys():
        val = test_dict.get(key)
  
        if test_dict.get(val) == key:
            yield key, val
    return 
  
# Initializing dict
test_dict = {'a' : 1, 'b' : 2, 'c' : 3,  1 : 'a', 2 : 'b'}
  
# printing original dict 
print("The original dict is : " + str(test_dict))
  
# Find Symmetric Pairs in dictionary
# using generator + loop
res = []
for key, val in find_sym_pairs(test_dict):
    temp = (key, val)
    res.append(temp)
  
# printing result
print("The pairs of Symmetric values : " + str(res))
输出 :
The original dict is : {'a': 1, 1: 'a', 'c': 3, 'b': 2, 2: 'b'}
The pairs of Symmetric values : [('a', 1), (1, 'a'), ('b', 2), (2, 'b')]

方法#2:使用列表推导

此任务也可以作为单行执行,使用列表理解作为执行基于循环的解决方案的缩短方式。

# Python3 code to demonstrate working of
# Find Symmetric Pairs in dictionary
# Using list comprehension
  
# Initializing dict
test_dict = {'a' : 1, 'b' : 2, 'c' : 3,  1 : 'a', 2 : 'b'}
  
# printing original dict 
print("The original dict is : " + str(test_dict))
  
# Find Symmetric Pairs in dictionary
# Using list comprehension
temp = [(key, value) for key, value in test_dict.items()]
res = [(x, y) for (x, y) in temp if (y, x) in temp]
  
# printing result
print("The pairs of Symmetric values : " + str(res))
输出 :
The original dict is : {'a': 1, 1: 'a', 'c': 3, 'b': 2, 2: 'b'}
The pairs of Symmetric values : [('a', 1), (1, 'a'), ('b', 2), (2, 'b')]