Python 中查找两个字典的公共键


字典是 Python 中四种数据类型之一,不允许任何键重复。在本问题陈述中,我们必须创建两个字典作为用户输入,并检查是否存在公共键匹配。如果找到公共键元素,则打印结果。这可以通过使用 Python 中的各种方法来实现,例如 type()、items()、set() 等。

让我们举个例子

输入

A = { ‘I’: 10, ‘II’: 20, ‘III’: 30, ‘IV’:40 }

B = { ‘II’: 40, ‘V’: 60, ‘VI’: 80, ‘I’: 90 }

输出

{ ‘I’, ‘II’ }

解释

上面两个变量被定义为设置字典的输入值,根据问题陈述,发现键名称 - I 和 II 在两个变量中都匹配。

语法

以下语法在示例中使用 -

keys()

keys() 是 Python 中的一个内置方法,它有助于从字典中返回键。

items()

这是 Python 中的内置方法,它返回包含键值对的视图对象。

set()

set() 是 Python 中的内置方法,可用于在一个变量中存储多个项目。

filter()

当我们需要根据特定条件过滤项目时,会应用 filter() 方法。简单来说,它允许用户迭代那些被提取出来以满足条件的元素。

lambda

Python 中的这个 lambda 函数被称为匿名函数。当需要函数对象时,可以使用它。

intersection()

交集是 Python 中的内置方法,它检查两个不同集合之间的相似性。

使用 keys() 函数

该程序使用 keys 来从字典中返回键,如果发现键元素相同。

示例

在以下示例中,首先定义名为 key_common 的函数,该函数接受两个参数 - a(接收来自 dict_1 的值)和 b(接收来自 dict_2 的值)。然后使用嵌套 for 循环迭代每个单独的字典,即 ab 通过使用内置函数 keys() 的变量 i 和 j。接下来,使用 if 语句,它将检查变量 - i 和 j 的等效性,这将找到一个相似的匹配,并通过打印变量 i 返回唯一的键。现在创建两个变量 - dict_1dict_2 来声明字典。然后使用函数调用获取结果。

def key_common(a,b):
      for i in a.keys():
        for j in b.keys(): 
          if i==j:
            print(i ,"is identified as the common key")
dict_1 ={'A':20,'T':30,'W':40,'S':100,'E':80}
dict_2 ={'E':200,'B':450,'S':100,'S':55,'A':20}
key_common(dict_1, dict_2)

输出

A is identified as the common key
S is identified as the common key
E is identified as the common key

使用 items() 函数

该程序使用 items(),它通过包含键值对返回字典的视图对象。为了检查公共匹配,它将使用内置方法 keys() 从字典中返回唯一的键。

示例

在以下示例中,我们将首先创建两个变量 - dict_1 和 dict_2,它们将声明包含键和值的两个字典。对于字典的视图对象,它将在两个变量中使用内置函数 items(),并使用运算符“&”将其存储在变量 result 中。接下来,它将使用字典推导式,其中变量 i 循环遍历 result 的每个项目,并将其存储在变量 res 中。使用运算符“&”,它使用内置函数 keys() 检查两个键,并将它们存储在变量 common_keys 中。最后,使用变量 common_keys 打印结果。

dict_1 = {"a": 1, "b":2, "c":3, "d":4}
dict_2 = {"t1": 1, "b":2, "e":5, "c":3}
# view object of common keys
result = dict_1.items() & dict_2.items() 
# In dictionary format
res = {i[0]:i[1] for i in result}  # i[0]:i[1] means each item in the list result.
common_keys = dict_1.keys() & dict_2.keys()  
print("Common Key:", common_keys)

输出

Common Key: {'b', 'c'}

在 for 循环中使用 set() 函数

set() 函数用于将字典项转换为元组集。然后使用运算符“&”执行集合交集以查找键的公共匹配。

示例

在以下示例中,该程序比较两个字典(dict_1dict_2),并打印同时存在于两个字典中的键值对。然后 for 循环迭代生成的元组集,并且 print() 函数用于显示同时存在于两个字典中的键值对。

dict_1 = {"a": 1, "b": 2, "c": 3, "d": 4}
dict_2 = {"t1": 1, "b": 2, "e": 5, "c": 3}

for (key, value) in set(dict_1.items()) & set(dict_2.items()):
    print('%s: %s is present in both dict_1 and dict_2' % (key, value))

输出

b: 2 is present in both dict_1 and dict_2
c: 3 is present in both dict_1 and dict_2

使用 intersection() 方法

该程序使用内置函数比较两个字典以查找公共键。

示例

在以下示例中,首先创建两个存储键以及值的字典。然后使用内置函数 set()intersection() 将从变量 a 和 b 中找到公共匹配。此过程存储在变量 k_common 中。接下来,使用 for 循环,它将遍历 k_common 以对字典中的公共键进行排序。内置函数 sorted() 由键的缩写定义。继续使用 print 函数设置参数 - keyend 以获得所需的结果。

a = {"ab": 11, "bc": 21, "cd": 13, "de": 41}
b = {"cd": 33, "ad": 14, "de": 51, "fa": 16}
k_common = set(a).intersection(b)
print("Common Key from two dictionaries:")
for key in sorted(k_common):
	print(key, end=" ")

输出

Common Key from two dictionaries:
cd de 

使用 filter() 和 lambda

该程序使用 filter() 删除未发现为公共键的那些唯一键,并使用 lambda 从字典中计算公共键。

示例

在以下示例中,我们将首先通过创建两个变量,即 a 和 b 来启动程序。然后使用内置函数,例如变量 c_keys 中的 filter(),它将找到两个字典中键的公共匹配。接下来,使用 for 循环,键将遍历接受名为 c_keys 的参数的内置函数 sorted 以生成公共键。然后使用参数 key 和 end 打印结果。

a = {"abc": 11, "bax": 21, "cxs": 37, "qwd": 44}
b = {"ccc": 30, "qwd": 41, "bax": 75, "esf": 67}
c_keys = filter(lambda x: x in a, b)
print("Common Keys from two dictionary:\n")
for key in sorted(c_keys):
	print(key, end=" ")

输出

Common Keys from the dictionary:

bax qwd 

结论

我们讨论了解决此问题陈述的各种方法。然后学习了 Python 的不同内置函数,如 set()、intersection()、filter() 等,以从字典中获取公共键。这种类型的程序有助于根据搜索算法构建逻辑。

更新于: 2023年8月14日

668 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告