Python 过滤掉非None的字典键

Python 过滤掉非None的字典键

Python字典是以下4种数据类型中最受欢迎的数据类型之一。字典使用键值对定义,并且不允许重复的键。值可以是字符串或整数。有时,在处理字典时会出现一些空值,可以用None值来填充。例如,当我们在处理机器学习的数据集时,发现某些行为空,可以在执行特定任务时用None值来填充。在Python中,我们有一些内置的函数,如items()和lambda,可以用来过滤掉非None的字典键。

让我们以一个示例来说明:

The given dictionary, {‘A’: 11, ‘B’: None, ‘C’: 29, ‘D’: None}
Then the final result becomes {‘A’: 11, ‘C’: 29}

语法

以下语法在示例中使用:

items()

items()是Python中的一个内置方法,它允许迭代字典中的键和值。

lambda

函数 lambda 提供了一种使用lambda关键字声明简短匿名函数的快捷方式。通过def关键字声明的lambda函数的行为。

使用字典推导

程序将键和值设置为使用字典推导将一个字典转换为另一个字典。然后使用名为items()的内置函数和条件if语句从列表中过滤掉空值。

示例

在下面的示例中,它将使用字典推导创建一个新的字典。在函数 return语句 中,它使用items()方法迭代字典中的键值对。然后检查每个键值对,如果值不是 None ,则将键值对包含在新字典中。然后创建原始字典设置其值。接下来,使用调用函数来调用该函数,并将其称为递归,并将其存储在变量filtered_dict中。最后,我们通过变量 filtered_dict 打印结果。

def filter_none(dictionary):
   return {key: value for key, value in dictionary.items() if value is not None}
# Create the dictionary
my_dict = {'a': 10, 'b': None, 'c': 30, 'd': None, 'e': 50}
filtered_dict = filter_none(my_dict)
print("After filter of Non-none dictionary key:\n", filtered_dict)

输出

After filter of Non-none dictionary key:
 {'a': 10, 'c': 30, 'e': 50}

使用filter()函数

该程序使用filter()函数,该函数接受两个参数作为内置函数,即lambda和items(),用于过滤Python中的非None字典键。

示例

在以下示例中,我们将展示名为filter()的内置函数以及lambda用于从字典中删除值。一般情况下,此返回函数作为列表推导式。然后,它将创建输入字典以设置空值,接下来将使用调用函数来传递输入字典并获取结果。

def filter_non_none_dict_filter(dictionary):
   return dict(filter(lambda item: item[1] is not None, dictionary.items()))

my_dict = {'I': 100, 'II': None, 'III': 300, 'IV': None, 'V': None}
filtered_dict = filter_non_none_dict_filter(my_dict)
print("After the filter of Non-none dictionary key:\n", filtered_dict)

输出

After the filter of Non-none dictionary key:
 {'I': 100, 'III': 300}

使用for循环和字典

程序使用for循环迭代字典项的键和值,并使用if语句根据None进行条件检查,以过滤Python中的非None字典键。

示例

在下面的示例中,使用一个名为filter_dict_loop的函数开始程序,该函数接受一个名为dictionary的参数来接收其值。然后在变量filter_dict中创建空字典,该字典只存储键的整数值。现在使用for循环遍历字典的键和值,使用items()方法。使用if语句检查值是否为None,如果是,则会自动从字典中删除键值对。接下来,返回该函数。继续创建一个包含整数和None值组合的字典,并将其存储在变量my_dict中。使用函数调用来调用函数,将参数作为名为f_dict的变量传递。最后,使用变量f_dict打印结果。

def filter_dict_loop(dictionary):
   filtered_dict = {}
   for key, value in dictionary.items():
      if value is not None:
         filtered_dict[key] = value
   return filtered_dict
# Create the dictionary 
my_dict = {'A': 91, 'B': None, 'C': 33, 'D': 78, 'E': 5}
f_dict = filter_dict_loop(my_dict)
print("After the filter of Non-none dictionary key:\n", f_dict)

输出

After the filter of Non-none dictionary key:
 {'A': 91, 'C': 33, 'D': 78, 'E': 5}

使用条件三元表达式的字典推导

程序使用字典推导将原始字典转化为过滤后的字典,条件三元表达式是一种在一行中编写if-else语句的方式。它经常在字典推导中被用来有条件地包含键值对。

示例

在下面的示例中,首先通过定义一个递归函数 filter_dict_conditional 来开始程序,该函数接受一个字典参数来访问其所有的键和值元素。然后函数通过移除非None的字典键来返回。接下来,它将创建字典来设置键和其对应的值,并将其存储在变量 my_dict 中。现在使用调用函数来将参数作为名为my_dict的变量传递,并将其存储在变量filtered_dict中。最后,通过变量 filtered_dict 打印结果。

def filter_dict_conditional(dictionary):
   return {key: value for key, value in dictionary.items() if value if not None}

my_dict = {'ABC': 11, 'DEF': None, 'GHI': 13, 'JKL': None, 'MNO': 15}
filtered_dict = filter_dict_conditional(my_dict)
print("After the filter of Non-none dictionary key:\n", filtered_dict)

输出

After the filter of Non-none dictionary key:
 {'ABC': 11, 'GHI': 13, 'MNO': 15}

结论

我们讨论了了解Python中非None字典键的过滤器的各种方法。各种内置方法,如items()、lambda和filter(),可用于去除非None值。此程序将现实生活中的机器学习数据集的实例与根据字典提供的特定条件填充空数据值为none相关联。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程