python dict 字典详解

和列表相同,字典也是许多数据的集合,属于可变序列类型。不同之处在于,它是无序的可变序列,其保存的内容是以“键值对”的形式存放的。

字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。

字典类型很像学生时代常用的新华字典。我们知道,通过新华字典中的音节表,可以快速找到想要查找的汉字。其中,字典里的音节表就相当于字典类型中的键,而键对应的汉字则相当于值。

表 1 Python 字典特征
主要特征 解释
通过键而不是通过索引来读取元素 字典类型有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。
字典是任意数据类型的无序集合 和列表、元组不同,通常会将索引值 0 对应的元素称为第一个元素。而字典中的元素是无序的。
字典是可变的,并且可以任意嵌套 字典可以在原处增长或者缩短(无需生成一个副本),并且它支持任意深度的嵌套,即字典存储的值也可以是列表或其它的字典。
字典中的键必须唯一 字典中,不支持同一个键出现多次,否则,只会保留最后一个键值对。
字典中的键必须不可变 字典中的值是不可变的,只能使用数字、字符串或者元组,不能使用列表。

Python 中的字典类型相当于 Java 或者 C++ 中的 Map 对象。

 

1) 花括号语法创建字典

于字典中每个元素都包含 2 部分,分别是键和值,因此在创建字典时,键和值之间使用冒号分隔,相邻元素之间使用逗号分隔,所有元素放在大括号 {} 中。

Python 字典类型的语法格式如下:

key: valuen 表示各个元素的键值对。需要注意的是,同一字典中各个元素的键值必须唯一。

dictname = {'key':'value1','key2':'value2',...,'keyn':valuen}
[root@kube dict]# cat demo.py 
#coding:utf-8

scores = {'语文':89,'数学':100,'化学':90}
print(type(scores))
a_scores = {'语文':89,'数学':(44,55),'化学':[90,66]}          #key 键不能是列表会报错
print(a_scores)


[root@kube dict]# py demo.py 
<class 'dict'>
{'语文': 89, '数学': (44, 55), '化学': [90, 66]}
[root@kube dict]# 

2) 通过 fromkeys() 方法创建字典

Python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建所有键值为空的字典,使用此方法的语法格式为:

dictname = dict.fromkeys(list,value=None)
[root@kube dict]# cat demo1.py 
s_name = {'语文','数学','英语'}
scores = dict.fromkeys(s_name)
print(type(scores))
print(scores)
[root@kube dict]# py demo1.py 
<class 'dict'>
{'数学': None, '英语': None, '语文': None}
[root@kube dict]#

3) 通过 dict() 映射函数创建字典

通过 dict() 函数创建字典的写法有多种,表 2 罗列出了常用的几种方式,它们创建的都是同一个字典 a。

表 2 dict() 函数创建字典
创建格式 注意事项
>>> a = dict(one=1,two=2,three=3) 注意,其中的 one、two、three 都是字符串,但使用此方式创建字典时,字符串不能带引号。
>>> demo = [('two',2),('one',1),('three',3)] #方式1
>>> demo = [['two',2],['one',1],['three',3]] #方式2
>>> demo = (('two',2),('one',1),('three',3)) #方式3
>>> demo = (['two',2],['one',1],['three',3]) #方式4
>>> a = dict(demo)
向 dict() 函数传入列表或元组,而它们中的元素又各自是包含 2 个元素的列表或元组,其中第一个元素作为键,第二个元素作为值。
>>> demokeys = ['one','two','three'] #还可以是字符串或元组
>>> demovalues = [1,2,3] #还可以是字符串或元组
>>> a = dict(zip(demokeys,demovalues))
通过应用 dict() 函数和 zip() 函数,可将前两个列表转换为对应的字典。

注意,无论采用以上哪种方式创建字典,字典中各元素的键都只能是字符串、元组或数字,不能是列表。

python 访问字典

和列表、元组不同,它们访问元素都是通过下标,而字典不同,它是通过键来访问对应的元素值。

因为字典中元素是无序的,所以不能像列表、元组那样,采用切片的方式一次性访问多个元素。

Python 更推荐使用 dict 类型提供的 get() 方法获取指定键的值。get() 方法的语法格式为:

dict.get(key[,default])
[root@kube dict]# cat demo1.py 
scores = {'语文':60,'数学':70,'英语':80}
print(scores.get('语文'))
print(scores.get('英语'))     #通过get 函数获取值
del scores                   #del 删除字典
print(scores)

[root@kube dict]# py demo1.py 
60
80
Traceback (most recent call last):
  File "demo1.py", line 5, in <module>
    print(scores)
NameError: name 'scores' is not defined
[root@kube dict]# 

python  dict 字典基本操作

由于字典属于可变序列,所以我们可以任意操作字典中的键值对(key-value 对)。Python 中,常见的字典操作有以下几种:

    1. 向现有字典中添加新的键值对。
    2. 修改现有字典中的键值对。
    3. 从现有字典中删除指定的键值对。
    4. 判断现有字典中是否存在指定的键值对。

Python字典添加键值对

如果要为 dict 添加键值对,只需为不存在的 key 赋值即可。实现此操作的语法格式如下:
dict[key] = value 
表 1 Python 字典添加键值对语法参数
参数 含义
dict 表示字典名称。
key 表示要添加元素的键。注意,既然是添加新的元素,那么就要保证此元素的键和字典中现有元素的键互不相同。
value 表示要添加数据的值,只要是 Python 支持的数据类型就可以。

猜你喜欢

转载自www.cnblogs.com/zy09/p/11597909.html
今日推荐