如何用Python查找列表和字典中的公共键
在这篇文章中,我们将学习如何用Python查找列表和字典中的公共键。
使用的方法
以下是完成这项任务的各种方法
- 使用’in’运算符和列表理解法
-
使用 set(), intersection() 函数
-
使用 keys() 函数和 in 操作符
-
使用Counter()函数
例子
假设我们有一个输入字典和列表。我们将使用上述方法找到输入列表中的共同元素和字典的键。
输入
inputDict = {"hello": 2, "all": 4, "welcome": 6, "to": 8, "tutorialspoint": 10}
inputList = ["hello", "tutorialspoint", "python"]
输出
Resultant list: ['hello', 'tutorialspoint']
在上面的例子中,’ hello’ 和’ tutorialspoint’ 是输入列表中的共同元素和字典中的键。因此它们被打印出来。
方法 1: 使用 ‘in’ 操作符和列表理解法
列表理解
当你希望基于现有列表的值建立一个新的列表时,列表理解提供了一种更短/更简洁的语法。
Python ‘in’ 关键字
- in 关键字用于确定一个值是否存在于一个序列中 (列表、范围、字符串等等)。
-
它也被用来在for循环中遍历一个序列。
算法(步骤)
以下是执行所需任务时需要遵循的算法/步骤:
- 创建一个变量来存储 输入字典。
-
创建另一个变量来存储 输入列表。
-
遍历输入列表,用 列表理解法 检查是否有任何输入列表元素与字典的键相匹配 。
-
打印结果列表。
例子
下面的程序使用’in’运算符和列表理解返回输入列表中的共同元素和字典中的键值:
# input dictionary
inputDict = {"hello": 2, "all": 4, "welcome": 6, "to": 8, "tutorialspoint": 10}
# printing input dictionary
print("Input dictionary:", inputDict)
# input list
inputList = ["hello", "tutorialspoint", "python"]
# printing input list
print("Input list:", inputList)
# checking whether any input list element matches the keys of a dictionary
outputList = [e for e in inputDict if e in inputList]
# printing the resultant list
print("Resultant list:", outputList)
输出
在执行时,上述程序将产生以下输出:
Input dictionary: {'hello': 2, 'all': 4, 'welcome': 6, 'to': 8, 'tutorialspoint': 10}
Input list: ['hello', 'tutorialspoint', 'python']
Resultant list: ['hello', 'tutorialspoint']
方法 2: 使用 set(), intersection() 函数
set()函数 – 创建一个集合对象。一个集合列表将以随机的顺序出现,因为这些项目是没有顺序的。它删除了所有重复的东西。
intersection()函数 – intersection()方法返回的是一个包含两个或多个集合之间相似性的集合。
它意味着只有在两个集合中都存在的项目,或者如果有两个以上的集合被比较,则所有的集合都包括在返回的集合中。
例子
下面的程序使用 set() 和 intersection() 返回输入列表和 dictionary keys 中的共同元素。
# input dictionary
inputDict = {"hello": 2, "all": 4, "welcome": 6, "to": 8, "tutorialspoint": 10}
# printing input dictionary
print("Input dictionary:", inputDict)
# input list
inputList = ["hello", "tutorialspoint", "python"]
# printing input list
print("Input list:", inputList)
# Converting the input dictionary and input List to sets
# getting common elements in input list and input dictionary keys
# from these two sets using the intersection() function
outputList = set(inputList).intersection(set(inputDict))
# printing the resultant list
print("Resultant list:", outputList)
输出
在执行过程中,上述程序将产生以下输出结果
Input dictionary: {'hello': 2, 'all': 4, 'welcome': 6, 'to': 8, 'tutorialspoint': 10}
Input list: ['hello', 'tutorialspoint', 'python']
Resultant list: {'hello', 'tutorialspoint'}
方法 3: 使用 keys() 函数 & in 操作符
keys()函数 – dict.key()方法提供一个视图对象,按插入的顺序显示字典中所有键的列表。
例子
下面的程序使用keys()函数和in operator-返回输入列表中的普通元素和字典中的键。
# input dictionary
inputDict = {"hello": 2, "all": 4, "welcome": 6, "to": 8, "tutorialspoint": 10}
# printing input dictionary
print("Input dictionary:", inputDict)
# input list
inputList = ["hello", "tutorialspoint", "python"]
# printing input list
print("Input list:", inputList)
# empty list for storing the common elements in the list and dictionary keys
outputList = []
# getting the list of keys of a dictionary
keysList = list(inputDict.keys())
# traversing through the keys list
for k in keysList:
# checking whether the current key is present in the input list
if k in inputList:
# appending that key to the output list
outputList.append(k)
# printing the resultant list
print("Resultant list:", outputList)
输出
Input dictionary: {'hello': 2, 'all': 4, 'welcome': 6, 'to': 8, 'tutorialspoint': 10}
Input list: ['hello', 'tutorialspoint', 'python']
Resultant list: ['hello', 'tutorialspoint']
方法 4: 使用 Counter() 函数
Counter()函数– 一个对可散列对象进行计数的子类。它在被调用/调用时隐含地创建一个可迭代的哈希表。
这里,Counter()函数被用来获取输入列表元素的频率。
例子
下面的程序使用 Counter() 函数返回输入列表和字典中的常见元素:
# importing a Counter function from the collections module
from collections import Counter
# input dictionary
inputDict = {"hello": 2, "all": 4, "welcome": 6, "to": 8, "tutorialspoint": 10}
# printing input dictionary
print("Input dictionary:", inputDict)
# input list
inputList = ["hello", "tutorialspoint", "python"]
# printing input list
print("Input list:", inputList)
# getting the frequency of input list elements as a dictionary
frequency = Counter(inputList)
# empty list for storing the common elements of the list and dictionary keys
outputList = []
# getting the list of keys of a dictionary
keysList = list(inputDict.keys())
# traversing through the keys list
for k in keysList:
# checking whether the current key is present in the input list
if k in frequency.keys():
# appending/adding that key to the output list
outputList.append(k)
# printing the resultant list
print("Resultant list:", outputList)
输出
Input dictionary: {'hello': 2, 'all': 4, 'welcome': 6, 'to': 8, 'tutorialspoint': 10}
Input list: ['hello', 'tutorialspoint', 'python']
Resultant list: ['hello', 'tutorialspoint']
总结
在这篇文章中我们学习了四种不同的方法来显示给定列表和字典中的公共键。我们还学习了如何使用 Counter() 函数获得迭代器的频率的字典。