Python 程序提取特定值类型的键
Python 中,一种更常见地称为关联数组的数据结构的实现是**字典**。字典由一组键值对组成。每个键值组合对应一个键及其对应的值。
在本文中,我们将学习如何在 Python 中提取具有特定值类型的键。
使用的方法
以下是完成此任务的各种方法 -
使用 for 循环和 isinstance() 方法
使用列表推导式和 isinstance() 方法
使用 keys() 和 type() 方法
示例
假设我们已经获取了一个**输入字典**。我们现在将
输入
inputDict = {'hello': 5, 'tutorials': 'hi', 'users': 2, 'codes': 'user', 'python': [1, 2]} extractType = str
输出
['tutorials', 'codes']
在上述输入字典中,具有 str(字符串)类型的值为**'hi'**和**'user'**。这些值的对应键分别为**'tutorials'**和**'codes'**。因此提取这些键。
使用 for 循环和 isinstance() 方法
isinstance() 函数
如果给定对象是指定类型,则 isinstance() 函数返回**True**;否则,它返回**False**。
如果 type 参数是**元组**,则如果对象是元组中类型的其中之一,则返回**True**。
语法
isinstance(object, type)
参数
**object** - 要检查的对象,以查看它是否属于该类。
**type** - 类型或类,或类型和/或类的元组
算法(步骤)
以下是执行所需任务的算法/步骤 -。
创建一个变量来存储一个包含多种数据类型的**输入字典**。
打印输入字典。
创建另一个变量来存储要提取的输入数据类型。
初始化一个空列表来存储指定输入类型的结果键。
使用**for 循环**遍历输入字典的键和值,使用**items() 函数**。
使用**if 条件**语句检查当前值类型是否等于使用**isinstance()**函数的输入提取类型。
如果条件为**true**,则使用**append() 函数**(将元素添加到列表的末尾)将相应的键附加到结果键列表。
打印具有指定输入类型的输入字典的结果键。
示例
以下程序使用 for 循环和 isinstance() 方法从输入字典返回给定输入值类型的键 -
# input dictionary having multiple datatypes inputDict = {'hello': 5, 'tutorials': 'hi', 'users': 2, 'codes': 'user', 'python': [1, 2]} # printing input dictionary print("Input dictionary:\n", inputDict) # input datatype to be extracted extractType = str # storing resultant keys of input type resultantKeys = [] # traversing through keys, values of input dictionary for k, v in inputDict.items(): # checking whether the current value type is equal to the input data type if isinstance(v, extractType): # appending that corresponding key to the resultant keys list resultantKeys.append(k) # printing the resultant keys of the dictionary having the specified input type print("Resultant keys of input dictionary with 'string' type:\n", resultantKeys)
输出
执行后,上述程序将生成以下输出 -
Input dictionary: {'hello': 5, 'tutorials': 'hi', 'users': 2, 'codes': 'user', 'python': [1, 2]} Resultant keys of input dictionary with 'string' type: ['tutorials', 'codes']
使用列表推导式和 isinstance() 方法
当您希望根据现有列表的值构建新列表时,列表推导式提供了更短/简洁的语法。
示例
以下程序使用列表推导式和 isinstance() 方法从输入字典返回给定输入值类型的键 -
# input dictionary having multiple datatypes inputDict = {'hello': 5, 'tutorials': 'hi', 'users': 2, 'codes': 'user', 'python': [1, 2]} # printing input dictionary print("Input dictionary:\n", inputDict) # input datatype to be extracted extractType = str # Using list comprehension to extract keys with string datatype resultantKeys = [k for k, v in inputDict.items() if isinstance(v, extractType)] # printing the resultant keys of the dictionary having the specified input type print("Resultant keys of input dictionary with 'string' type:\n", resultantKeys)
输出
执行后,上述程序将生成以下输出 -
Input dictionary: {'hello': 5, 'tutorials': 'hi', 'users': 2, 'codes': 'user', 'python': [1, 2]} Resultant keys of input dictionary with 'string' type: ['tutorials', 'codes']
方法 3 使用 keys() 和 type() 方法
**keys() 方法** - dict.keys() 方法提供一个视图对象,该对象按插入顺序显示字典中所有键的列表。
**type()** 函数(返回对象的类型)。
算法(步骤)
以下是执行所需任务的算法/步骤 -。
使用**for 循环**遍历使用**keys()**函数的输入字典的键
使用**if 条件**语句检查当前值的类型是否等于使用 type() 函数的输入提取类型。
如果条件为**true**,则使用**append()**函数(将元素添加到列表的末尾)将当前键附加到结果键列表。
打印具有指定输入类型的输入字典的结果键。
示例
以下程序使用 keys() 和 type() 函数从输入字典返回给定输入值类型的键 -
# input dictionary having multiple datatypes inputDict = {'hello': 5, 'tutorials': 'hi', 'users': 2, 'codes': 'user', 'python': [1, 2]} # printing input dictionary print("Input dictionary:\n", inputDict) # input datatype to be extracted extractType = str # storing resultant keys of input type resultantKeys = [] # traversing through keys of input dictionary for k in inputDict.keys(): # checking whether the current value type of that corresponding key # is equal to the input extract type if type(inputDict[k]) is extractType: # appending the current key to the resultant list resultantKeys.append(k) # printing the resultant keys of the dictionary having the specified input type print("Resultant keys of input dictionary with 'string' type:\n", resultantKeys)
输出
执行后,上述程序将生成以下输出 -
Input dictionary: {'hello': 5, 'tutorials': 'hi', 'users': 2, 'codes': 'user', 'python': [1, 2]} Resultant keys of input dictionary with 'string' type: ['tutorials', 'codes']
结论
本文介绍了三种不同的提取具有特定值类型的键的方法。此外,我们还学习了如何使用 type() 函数确定变量的类型以及如何使用 isinstance() 方法比较两种数据类型。