Python - 将单项字典分组为列表值
将单项字典分组为列表值对于数据聚合或重新格式化非常有用。在 Python 中,我们可以使用各种方法执行此任务,例如使用循环、使用列表推导、使用 map() 函数和使用 operator.itemgetter() 函数。在本文中,我们将探索将单项字典分组为列表值的不同方法。
方法 1:使用循环
一种简单的方法是遍历单项字典并将其值附加到列表中。让我们借助一个示例来实现这个循环。
语法
list_name.append(element)
此处,append() 函数是一种列表方法,用于将元素添加到 list_name 的末尾。它通过将指定元素添加为新项目来修改原始列表。
示例
在下面的示例中,我们创建一个名为 result 的空列表。然后,我们遍历 single_item_dicts 列表中的每个字典。通过使用 values() 方法,我们将字典的值作为列表类对象获取。由于每个字典只包含一个项目,我们可以使用索引 [0] 提取值。最后,我们将提取的值附加到结果列表中。输出显示所需的值列表。
single_item_dicts = [{'fruit': 'apple'}, {'color': 'red'}, {'animal': 'lion'}] result = [] for dictionary in single_item_dicts: result.append(list(dictionary.values())[0]) print(result)
输出
['apple', 'red', 'lion']
方法 2:使用列表推导式
我们可以使用列表推导式将单项字典分组为列表值。让我们借助示例来理解此列表推导式方法。
语法
[expression for item in list if condition]
此处,表达式遍历列表中的每个项目,并根据表达式末尾的 if 条件过滤元素。
示例
在下面的示例中,列表推导式允许我们在一行中生成一个新列表。在本例中,我们在方括号中使用与上一种方法相同的逻辑。生成的列表推导式生成所需的值列表。
single_item_dicts = [{'fruit': 'apple'}, {'color': 'red'}, {'animal': 'lion'}] result = [list(dictionary.values())[0] for dictionary in single_item_dicts] print(result)
输出
['apple', 'red', 'lion']
方法 3:使用 map() 函数
我们还可以将 map() 函数与 lambda 函数一起使用,从字典中提取值。让我们借助示例来实现此 map() 函数。
语法
map(function, iterable)
此处,map() 函数接受两个参数:function 和 iterable。它将函数应用于 iterable 的每个元素,并返回产生结果的迭代器。在将单项字典分组为列表值的上下文中,该函数可以是 lambda 函数或预定义函数,用于从每个字典中提取所需的值。
示例
在下面的示例中,我们使用 map() 函数将 lambda 函数应用于 single_item_dicts 列表中的每个字典。 lambda 函数将字典作为输入,使用与之前相同的逻辑提取其值并返回。我们将结果包装在 list() 调用中以获取值列表。
single_item_dicts = [{'fruit': 'apple'}, {'color': 'red'}, {'animal': 'lion'}] result = list(map(lambda dictionary: list(dictionary.values())[0], single_item_dicts)) print(result)
输出
['apple', 'red', 'lion']
方法 4:使用 operator.itemgetter() 函数
Python 的 operator 模块提供了一个方便的函数,名为 itemgetter()。它允许我们从字典中提取特定项。我们可以在单项字典上实现此方法,如以下示例所述。
语法
operator.itemgetter(*items)
此处,operator 模块中的 itemgetter() 函数创建一个可调用对象,该对象从给定对象中检索指定项。它可以采用多个参数来表示要检索的项的索引或键。在我们的例子中,我们使用 itemgetter(0) 从每个字典中提取第一个项(值)。
示例
在下面的示例中,我们首先导入 operator 模块。然后,我们将 itemgetter(0) 函数应用于每个字典的值,该函数返回每个字典中的第一个项(值)。与上一种方法类似,我们使用 map() 函数遍历 single_item_dicts 列表并提取值。最后,我们将生成的 map 对象转换为列表。
import operator single_item_dicts = [{'fruit': 'apple'}, {'color': 'red'}, {'animal': 'lion'}] result = list(map(operator.itemgetter(0), map(dict.values, single_item_dicts))) print(result)
输出
['apple', 'red', 'lion']
结论
在本文中,我们讨论了如何使用不同的 Python 方法将单项字典分组为列表值。我们介绍了四种方法:使用循环、列表推导、map() 函数和 operator.itemgetter() 函数。每种方法都展示了一种实现所需结果的独特方法。可以根据您要解决的问题类型使用上述任何一种方法。