Python |在字典中查找对称对
原文:https://www . geesforgeks . org/python-find-symmetric-in-dictionary-pairs/
有时,在使用 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))
Output :
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))
Output :
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')]
版权属于:月萌API www.moonapi.com,转载请注明出处