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’关键字有两种用法: - ‘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()返回输入列表和字典键中的共同元素 –
# 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.keys()方法提供了一个视图对象,该对象按插入顺序显示字典中所有键的列表。
示例
以下程序使用keys()函数和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)
# 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()函数获取可迭代对象频率的字典。