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() 方法比较两种数据类型。

更新于: 2023-08-18

106 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告