如何使用Python将字典的值转换为绝对值?




如何使用Python将字典的值转换为绝对值?

字典是一种数据结构,可以包含任何数据类型的键和值。这些值也可以是整数类型的。在本文中,我们将看到如何使用Python将字典的值转换为绝对值,即,如果一个值为负数,它将被转换为其绝对值或正数,而正数将保持不变。

输入输出示例:

输入: {‘a’: 1, ‘b’: -1}



输出: {‘a’: 1, ‘b’: 1}

要进行这种转换,有许多技术可供选择,但其中一个主要使用的函数是abs()函数。它是内置函数,返回给定其输入的数的绝对值,也可以被认为是计算数值的大小而不考虑其符号的函数。

abs() 函数基本上接受一个参数,可以是整数、浮点数或复数。它返回输入参数的绝对值。如果输入是实数(整数或浮点数),该函数返回其正值。如果输入是复数,则该函数返回其幅度,即复平面中到原点(0, 0)的距离。

方法1:循环和更新(朴素方法)

此方法简单地迭代整个字典,并对其每个值应用abs()函数。使用键来访问和设置值。

示例:

my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
for key in my_dict:
    my_dict[key] = abs(my_dict[key])
print(my_dict)

输出

{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}

方法2:字典解析

Python的字典解析为我们提供了一种简单的方法,可以用最少的语法复杂性快速创建字典。该构造通过迭代一个可迭代对象并使用直观的表达式来分配键和值来生成新字典,从而提高可读性,同时减少了显式循环和额外的代码行。

示例

my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}

abs_dict = {key: abs(value) for key, value in my_dict.items()}
print(abs_dict)

输出结果

{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}

方法3: 使用带lambda函数的map()

Python包含一个map()函数,它允许我们将给定的函数应用(或映射)到可迭代对象的每个元素上,然后返回一个由结果组成的迭代器。它需要2个参数:要应用的函数和要操作的可迭代对象。

结合lambda函数使用时,lambda函数是临时定义的匿名函数,map()就变成了一个强大的工具,可以对可迭代对象的元素执行简单的操作。lambda函数通常在一个函数只需要短时间使用或作为map()的参数时使用。

示例

my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}

abs_dict = {key: abs(value) for key, 
            value in map(lambda item: (item[0], item[1]), my_dict.items())}
print(abs_dict)

输出

{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}

方法4:使用dict()构造函数和推导式

Python内置的字典构造函数dict()可以快速高效地从各种形式的输入(如可迭代对象、键值对甚至现有的字典)创建新的字典对象。

结合使用字典推导式,可以方便地使用可迭代对象或其他数据源创建字典。通过这个灵活的工具,dict()构造函数成为了从可迭代对象或其他数据源中生成具有精确键值映射的字典的高效方法。

示例

my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = dict((key, abs(value)) for key, value in my_dict.items())
print(abs_dict)

输出

{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}

方法五:使用for循环和字典推导式

下面提供的代码演示了创建一个名为”my_dict”的字典,并包含多个键值对。字典推导式允许使用for循环迭代这些键,并通过abs()函数得到另一个名为”abs_dict”的字典,其中每个键对应于”my_dict”中相应值的绝对值。运行时,”abs_dict”显示的结果与原字典相同,但值被转换为其绝对值。代码最后打印出了这个第二个版本,它仍然保留相同的键,但值已被转换为它们的绝对值大小!

例子

my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = {key: abs(my_dict[key]) for key in my_dict}
print(abs_dict)

输出

{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}

方法六: 使用字典推导和update()方法

字典推导结合update()函数可以创建一个有效的解决方案。在创建名为”my_dict”的字典之后,字典推导将其所有的键添加进去,并根据它们的绝对值更新相应的值。

示例

my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = {}
abs_dict.update({key: abs(value) for key, value in my_dict.items()})
print(abs_dict)

输出

{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}

方法7:使用numpy

Python常用的NumPy库为我们提供了许多函数。然而在这种情况下,一个非常有用的函数是numpy.abs()。它允许我们计算数组对象中数值元素的绝对值。它以数组或任何标量作为输入,然后返回相应元素的绝对值的数组/标量。



例子

import numpy as np
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
abs_dict = {key: np.abs(value) for key, value in my_dict.items()}
print(abs_dict)

输出

{'x': 11, 'y': 7, 'e': 82, 't': 42, 'r': 175}

第八种方法:使用pandas

Pandas只是另一个像numpy一样的数据处理和操作库。我们从所有字典值中创建一个pandas数据帧,并创建一个我们将称为abs_values的新列。然后,我们将abs()函数应用于包含值的初始列。应用abs()之后的新值存储在abs_values列中,然后使用to_dict()函数将其转换回字典。

示例

import pandas as pd
my_dict = {'x': -11, 'y': 7, 'e': -82, 't': 42, 'r': -175}
df = pd.DataFrame({'values': my_dict})
# Apply the abs() function to the 'values' column.
df['abs_values'] = df['values'].abs()
abs_dict = df['abs_values'].to_dict()
print(abs_dict)

输出

{'e': 82, 'r': 175, 't': 42, 'x': 11, 'y': 7}

结论

在Python中,有多种方法可以将字典的值转换为绝对值。其中大多数方法都使用了abs()函数。这些方法包括使用循环、字典推导式、映射和lambda函数、字典构造函数、带有字典推导式的循环、带有update()的字典推导式、numpy库和最后是pandas库。

总共演示了8种方法,其中大多数方法的时间复杂度都为 O(N) ,其中N表示键值对的数量或正在处理的字典值的大小。



Python 精选笔记
使用Python控制树莓派GPIO引脚使用Python和Pandas库构建股票价格预测模型如何在Python中解析XML并计算特定节点属性的实例?如何在Python中解析本地HTML文件?如何按多列对PySpark DataFrame进行排序?如何在Pygame中移动游戏角色?如何在Python中同时打开两个文件?如何使用Python移动文件夹及其子文件夹的列表?如何使用Python将多个文件夹合并成一个文件夹?如何使用Python将多个Excel文件合并成一个单一文件?如何使用Python Pandas按照共同的键合并多个TSV文件?如何使用PIL将透明的PNG图片与另一张图片合并?Python中嵌套函数是如何工作的?Python中的全局变量和局部变量?在Python函数中如何使用全局变量?如何从Python对象中获取源代码?如何在Python中返回一个函数?如何在Python中安装matplotlib?Python - 分割包含散乱字符的字符串Python - 记录列表XORPython – 向记录的末尾添加数据Python - 键值大于K的记录在Python中垂直打印列表Python - 列表中字符串平均长度Python列表中的交替循环Python程序实现混淆词游戏Python-记录联合Python程序计算列表中元组的重复项Python程序:将字符串的字符转换为相反的大小写Python - 打印给定年份列表中的闰年数量Python - 打印所有子列表中的共同元素Python - 删除嵌套列表中的所有元素如何在Python列表中检查空格?在Python中引发异常到另一个异常Python字符串中的范围复制Python程序计算包含列表的列表中列表的数量修改给定Python列表中的重复值Python - 检查元素是否在指定范围内出现从Python的元组列表中删除所有字符串如何使用Pygame添加颜色呼吸效果?如何在Bokeh中添加颜色条如何在Bokeh中添加颜色选择器?使用Python程序显示带有星边框的数字半菱形图案Python使用ipaddress模块确定给定的IPv4地址是否为保留地址使用ipaddress模块的Python程序来确定给定的IP地址是公网还是私网Python程序通过平方和连接给定数字的奇数位数来创建一个OTPPython程序创建以零为中心的列表Python程序计算字符串中的字符数Python程序将米转换为码,反之亦然Python程序:统计文本文件中的元音、行数和字符数Python程序计算文本文件中的单词数量Python程序,用于计算文本文件中空格的数量将字典的值转换为字符串的Python程序Python程序将浮点数转换为指数Python程序将整数转换为指数Python程序将整数转换为罗马数字将整数列表转换为字符串列表的Python程序Python程序将XML转换为字典Python程序:通过重复键对应的值次数将字典转换为列表将Dict of list转换为CSV的Python程序使用正则表达式统计Python程序中大写字母、小写字母、特殊字符和数字值的个数Python元组的并集Python - 嵌套和混合列表中的类型转换Python - 将列表转换为单值列表的元组如何在Python中打印上标和下标?如何在Python中打印多个参数?如何在Plotly-Python中将图例定位在图表内部?如何使用Pandas绘制时序图表?如何使用SciPy在Python中绘制Ricker曲线?如何在Python列表中删除True值?如何使用Python将字典的值转换为绝对值?如何使用Python将字典转换为K个大小的字典?如何使用Python将浮点数舍入到2位小数?如何在Python中将Excel转换为CSV如何在Python中对元组进行索引和切片?如何在Python中判断一个对象是否有属性?在Python中创建实例对象如何使用Python获取城市的经纬度?如何在Python中获取整数输入?如何交换给定 NumPy 数组的列?如何使用NumPy抑制对小数的科学计数法使用?如何使用Python将XML数据存储到MySQL数据库中?如何在Pandas DataFrame中减去两列?如何在Pandas DataFrame中标准化数据?如何堆叠多个Pandas DataFrames?如何使用scikit-learn的train_test_split()函数拆分数据集如何在Python中分割数据以进行训练和测试,而不使用Sklearn在Python set中找到最大值和最小值Python程序:找到长方体的体积、表面积和空间对角线如何在Python程序中获取字符串的K个可能切片如何使用Altair在Python中制作密度图?生成一次性密码(OTP)的Python程序Python程序:找出数组中可被给定数整除的元素的XOR寻找巨大最大公约数(Jumbo GCD)子数组的Python程序如何在OpenCV Python中查找图像轮廓的边界矩形?如何在Python脚本所在的目录中打开文件?如何在Anaconda中安装Python包?如何在OpenCV Python中旋转图像?如何给定完整路径导入Python模块?如何在Python中从另一个函数调用变量?使用Python的Matplotlib在X轴上绘制日期如何在Python中不使用math模块进行平方根运算?如何在Python Tkinter中给Frame添加边框?如何从Python函数返回一个字典?Python程序获取元组中的第一个和最后一个元素如何求一个Python字典的值的总和?Python Pandas - 查找列的最大值并返回其对应的行值机器人流程自动化 - 简介机器学习中的逻辑回归损失函数如何从Python日期中减去一天?将物联网和机器学习相结合,使我们的未来更智能机器学习中的Boosting | Boosting和AdaBoost如何在Python中将时间戳字符串转换为datetime对象?如何在Python中将变量名转换为字符串?什么是Python中的.pyc文件?Python - 检查列表中的所有元素是否相同如何在Python Plotly中设置Y轴的范围?如何将Python日期转换为Unix时间戳?Python中的Turtle绘图编程如何在Python中的给定位置插入一个对象到列表中?如何在Python中进行日期验证?如何使用Python将两个图并排显示?在Python中的方法和函数之间的区别Python中的PYTHONPATH环境变量是什么?如何对Python日期字符串列表进行排序?在Python的Pandas中向现有的DataFrame中添加新列如何将Python元组转换为字典?Python - 使用Pandas读取没有标题的csv文件?如何使用OpenCV Python在图像中检测矩形和正方形?如何使用OpenCV在Python中改变图像的对比度和亮度?如何在Python中将日期时间转换为UTC时间戳?如何列出Python模块中的所有函数?Python程序查找字符串中的所有重复字符使用Python进行文件搜索如何在Python Tkinter中更改按钮大小?如何在Python shell中了解/更改当前目录?如何在Python中检查一个字符是否为大写字母?如何在OpenCV Python中对图像进行归一化?在Python中更新列表如何在Python中生成不重复的随机数?Python中元素的频率列表