字典(dictionary)
字典 是无序的可变序列,保存的内容是以 “键(key)、值(value)” 对应的形式存放。键 是唯一的,值可以有多个。字典可以很方便的定义一个包含多个命名字段的对象。
字典的主要特征:
- 通过键而不是通过索引来读取;
- 字典是任意对象的无序集合;
- 字典是可变的,并且可以任意嵌套;
- 字典中的键必须是唯一的;
- 字典中的键必须不可变。
1.字典的创建和删除
-
创建字典时,键 和 值 之间使用冒号分隔,相邻的元素用逗号风分隔,所有元素放在一对 “{}” 中括号中。语法如下: 字典名 = {键1:值1,键2:值2,键3:值3,……,键n:值n}
字典名 = {}
实例: zidian = {'QQ':12345,'MSN':67890,'Wx':34567}
print(zidian,type(zidian))
print('zidian 数据类型为:',type(zidian))
输出结果: {'QQ': 12345, 'MSN': 67890, 'Wx': 34567} <class 'dict'>
zidian 数据类型为: <class 'dict'>
-
通过映射函数创建字典 语法: 字典名 = dict(zip(列表1,列表2))
相关函数:
-
dict() 函数用于创建一个字典。 语法: class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
参数说明:
- **kwargs – 关键字
- mapping – 元素的容器。
- iterable – 可迭代对象。
-
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。 语法: zip([iterable, ...])
参数说明:
实例: lie1 = ['QQ','MSN','Wx']
lie2 = [12345,67890,34567]
zi = dict(zip(lie1,lie2))
print('得到的字典 zi:',zi)
print('zi 的数据类型:',type(zi))
输出结果: 得到的字典 zi: {'QQ': 12345, 'MSN': 67890, 'Wx': 34567}
zi 的数据类型: <class 'dict'>
-
通过给定的 “键 - 值” 创建字典 语法: 字典名 = dict(键1=值1,键2=值2,键3=值3,……,键n=值n)
实例: zi = dict(QQ=12345,MSN=67890,Wx=34567)
print(zi)
输出结果: {'QQ': 12345, 'MSN': 67890, 'Wx': 34567}
-
使用 dict 对象的 fromkeys() 方法创建值为空的字典 语法: 字典名 = dict.fromkeys(列表)
实例: lie = ['QQ','MSN','Wx']
zi = dict.fromkeys(lie)
print ('值为空的字典:',zi)
输出结果: 值为空的字典: {'QQ': None, 'MSN': None, 'Wx': None}
函数说明: fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。 语法: dict.fromkeys(seq[, value])
参数
- seq – 字典键值列表。
- value – 可选参数, 设置键序列(seq)的值。
-
通过已创建的元组和列表创建字典 lie1 = ('QQ','MSN','Wx')
lie2 = [12345,67890,34567]
zi = {lie1:lie2}
print ('通过已创建的元组和列表创建的字典:',zi)
输出结果: 通过已创建的元组和列表创建的字典: {('QQ', 'MSN', 'Wx'): [12345, 67890, 34567]}
注意:通过已创建的元组和列表创建字典时,键必须时元组,列表无法作为键使用。
-
删除字典 lie1 = ('QQ','MSN','Wx')
lie2 = [12345,67890,34567]
zi = {lie1:lie2}
print ('通过已创建的元组和列表创建的字典:',zi)
zi.clear()
print ('clear() 清空的字典:',zi)
del zi
print ('del 清空的字典:',zi)
输出结果: 通过已创建的元组和列表创建的字典: {('QQ', 'MSN', 'Wx'): [12345, 67890, 34567]}
clear()清空的字典: {}
Traceback (most recent call last):
File "****.py", line 27, in <module>
print ('del 清空的字典:',zi)
NameError: name 'zi' is not defined
函数说明: clear() 函数用于删除字典内所有元素。 语法: 字典名.clear()
pop() 方法 pop() 方法删除字典给定键 key 及对应的值,返回值为被删除的值。key 值必须给出。 否则,返回 default 值。 语法: pop(key[,default])
参数:
- key: 要删除的键值
- default: 如果没有 key,返回 default 值
实例: zi = {'QQ':12345,'MSN':67890,'Wx':34567}
print ('显示字典:',zi)
qq = zi.pop('QQ')
print (qq)
print ('显示字典:',zi)
输出结果: 显示字典: {'QQ': 12345, 'MSN': 67890, 'Wx': 34567}
12345
显示字典: {'MSN': 67890, 'Wx': 34567}
popitem() 方法 popitem() 方法随机返回并删除字典中的最后一对键和值,如果字典已经为空,却调用了此方法,就报出KeyError异常。 语法: popitem()
实例: zi = {'QQ':12345,'MSN':67890,'Wx':34567}
print ('显示字典:',zi)
zi.popitem()
print ('再次显示字典:',zi)
输出结果: 显示字典: {'QQ': 12345, 'MSN': 67890, 'Wx': 34567}
再次显示字典: {'QQ': 12345, 'MSN': 67890}
|