Python 字典:你需要知道的一切 [附例子]
已发表: 2020-04-14如果您使用 Python,您一定听说过列表、字符串和元组。 今天,我们将讨论 Python 的另一个关键元素——字典。 看完这篇文章,你应该对 Python 字典,如何创建,如何使用它们有一个比较好的了解。
目录
什么是 Python 字典?
在 Python 中,字典是通常称为关联数组的数据结构的实现。 它包含无组织的数据值集合(例如,地图)。 但是,与仅包含单个值作为元素的其他数据类型不同,存储在字典中的数据值包含一个键:值对。 这有助于优化字典。 每个键:值对映射与其值关联的唯一键。
在 Python 字典中,键是唯一的,但值可能是也可能不是——虽然键必须是不可变的数据类型(字符串、数字和元组),但值可以是任何类型。 此外,在 Python 字典中,键是区分大小写的。 因此,具有相同名称的键,但不同情况下的处理方式不同。
详细了解: Python 数据类型
字典与列表
在 Python 中,字典和列表既有相似之处,也有不同之处。 字典和列表共有的共同特征包括:
- 它们是可变的。
- 它们是动态的。
- 它们可以嵌套——一个列表可以包含另一个列表,一个字典可以包含另一个字典。 此外,列表可以包含字典,反之亦然。
字典和列表之间的主要区别在于,虽然列表元素可以通过索引访问(基于它们在列表中的位置),但字典元素是通过键访问的。
Python 字典 - 方法
现在,我们将讨论 Python 字典中一些最常用的方法。
- copy() ——它返回一个字典的浅拷贝。
- clear( ) - 它从字典中删除所有项目。
- type( ) – 它返回传递变量的类型。
- pop( ) – 在提供键后,它从字典中删除并返回一个项目。
- popitem( ) – 它删除并返回任意项(键、值)。 此外,如果字典为空,它会引发 KeyError。
- get( ) – 用于访问键的值。
- items( ) – 它返回字典项目(键、值)的新视图。
- str( ) – 它生成字典的可打印字符串表示。
- pop(key[,d]) - 它删除带有 key 的项目并返回其值,如果未找到 key,则返回d 。 但是,如果未提供d且未找到密钥,则返回KeyError 。
- get(key[,d]) - 它返回键的值。 如果键不存在,则返回d (默认为None )。
- fromkeys(seq[, v]) – 它返回一个新字典,其中包含来自seq的键并且值等于 v(默认为None )。
- update([other]) - 它通过覆盖现有键来使用其他键/值对更新字典。
如何创建字典?
您可以通过将逗号分隔的键值对列表括在花括号 { } 中来创建 Python 字典。 冒号“:”将每个键与其关联的值分开:
d = {
<键>:<值>,
<键>:<值>,
.
.
.
<键>:<值>
}
您还可以使用内置函数dict()创建字典,如下所示:
# 空字典
我的字典 = {}
# 带有整数键的字典
my_dict = {1:'苹果',2:'球'}
# 混合键字典
my_dict = {'name': '约翰', 1: [2, 4, 3]}
# 使用 dict()
my_dict = dict({1:'apple', 2:'ball'})
# 来自将每个项目作为一对的序列
my_dict = dict([(1,'apple'), (2,'ball')])
如何访问字典中的元素?
要访问字典中的元素,您必须引用其键名。 您可以使用get( )方法来检索项目,或者您可以在方括号 [ ] 中提及键名。 如果在字典中没有找到键, get()方法返回 None 而不是 KeyError。
下面是一个用于访问字典中元素的代码示例:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
打印“dict['Name']:”,dict['Name']
打印“字典['年龄']:”,字典['年龄']
如何在字典中添加或更改元素?
由于 Python 字典是可变的,因此您可以添加元素甚至更改字典中包含的现有项的值。 可以通过多种方式将元素添加到字典中。 但是,您可以通过将其与键一起定义来一次将一个值添加到字典中。

例如, dict[key] = 'value'。 要更新字典中的现有值,您必须使用内置的update()方法。 您必须记住,在向字典添加值时,如果该值已经存在,则该值将被更新,否则带有该值的新键将被添加到字典中。
my_dict = {'name':'Jack', 'age': 26}
# 更新值
我的字典['年龄'] = 27
#输出:{'年龄':27,'名字':'杰克'}
打印(我的字典)
# 添加项目
my_dict['address'] = '市中心'
# 输出:{'address': 'Downtown', 'age': 27, 'name': 'Jack'}
打印(我的字典)
如何从字典中删除或删除元素?
要从字典中删除或删除项目,可以使用pop ( )方法。 它将使用提供的 ket 删除特定项目并返回该值。 您还可以使用popitem( )方法从字典中删除并返回任意元素(键和值)。
如果要一次删除所有项目,可以使用clear( )方法。 您还可以使用 del 关键字删除单个项目或使用del dict ( )方法删除整个字典本身。
使用 del dict ( ) 方法的示例:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['名称']; # 删除带有键“名称”的条目
dict.clear(); # 删除字典中的所有条目
删除字典; # 删除整个字典
打印“字典['年龄']:”,字典['年龄']
打印“dict['School']:”,dict['School']
还可以学习:印度的 Python 开发人员薪水
如何遍历字典?
在 Python 字典中,您可以使用for循环进行循环。 当您遍历字典时,字典的键是返回值。
遍历字典的示例是:
对于thisdict中的x:
打印(x)
阅读:最重要的 Python 函数
如何检查字典中是否存在键?
您可以使用“ in ”关键字来检查字典中是否存在特定键,如下所示:
这个字典 = {
“品牌”:“法拉利”,
“型号”:“Daytone”,
“年份”:“1968”
}
如果thisdict中的“模型”:
print(“是的,‘模型’是 thisdict 字典中的键之一”)
如何确定字典的长度?
您可以使用len( )方法设置字典的长度,即确定它有多少元素(键:值对) ,如下所示:
打印(len(thisdict))
如何复制字典?
您可以使用内置的copy()方法复制字典。 但是,您不能通过键入dict2 = dict1来复制字典,因为dict2只是对dict1的引用。
下面是一个使用copy()方法的例子:
这个字典 = {
“品牌”:“福特”,
“模型”:“野马”,
“年”:1964
}
mydict = thisdict.copy()
打印(mydict)
Python字典:理解
在 Python 中,字典理解是一种从可迭代对象创建新字典的直接而简洁的方法。 它由一个表达式对(键:值)和花括号 { } 内的 for 语句组成。 字典理解可以包含多个for或if语句。
这是创建字典的示例,其中每个项目是一对数字及其平方:
squares = {x: x*x for x in range(6)}
# 输出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
打印(正方形)
阅读更多: Python 数据可视化库
包起来
基本上就是这样——你需要了解的关于 Python 字典的所有基础知识!
如果您想了解 Python 以及有关数据科学的一切,请查看 upGrad 的数据科学认证课程,该课程是为在职专业人士创建的,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导、一对一-1 与行业导师,400 多个小时的学习和顶级公司的工作协助。
Python中对字典的需求是什么?
数据值的无序集合是 Python 字典。 Python 中需要字典来存储数据值,就像地图一样。 在所有其他数据类型中,它们只能将单个值作为元素保存。 但是,字典能够保存键:值对。 这对使字典的功能更加优化。
要在 Python 中创建字典,您只需将元素放在花括号中,用“逗号”分隔所有元素。 字典中的值可以重复和复制,但不能重复字典中的键。 字典中的键是区分大小写的,因此即使两个具有相同名称但大小写不同的键也会被区别对待。
什么可以存储在 Python 字典中?
Python 中使用字典在任何唯一键的帮助下检索数据。 您可以存储在 Python 变量中的所有内容都可以存储在 Python 字典中。 您甚至可以通过创建列表将一个字典嵌套到另一个字典中。 相反,密钥必须是不可变的。
您可以通过调用存储特定值的键轻松检索存储的值。 如果您对返回的列表进行任何更改,那么它也会对字典产生影响。 需要了解存储在字典中的值和检索到的列表只是相同的对象。
Hashtable 和 Dictionary 有何不同?
Hashtable 是非泛型集合,而 Dictionary 是数据值的泛型集合。 允许存储相同数据类型的键值对和不同数据类型的键值对,而字典中只能存储相同数据类型的键值对。
由于 Hashtable 中存在装箱和拆箱,因此与 Dictionary 相比,数据检索过程较慢。 Hashtable 中没有维护顺序,但您将始终在 Dictionary 中看到存储值的维护顺序。