定义:字典是由一系列键值对组成的可变映射容器
特点:
- 字典是可变的(可以在原处增长或缩短,键对应的值可以任意深度的嵌套),但字典中的键是不可变的(只能是数字、字符串或元组,而对应的值可以是任意数据类型)。
- 字典的存储是基于哈希原理的,是无序的;python3.6及以后的字典输出顺序是有序的。
- 字典中的键必须唯一,若出现两次及以上,则后一个值会被记住,而键对应的值不是必须唯一。
一、字典的创建和删除
1.创建空字典
方法一:d01 = {}
方法二:d02 = dict()
2.创建具有默认值的字典
方法一:dictionary = {'key1':'value1', 'key2':'value2', ……, 'keyn':'valuen',}
方法二:dictionary = dict(key1=value2, key2=value2, ......, keyn=valuen)
方法三:dictionary = dict(((),(),...()))
dictionary = dict([(),(),...,()])
dictionary = dict(([],[],...,[]))
dictionary = dict([[],[],...,[]])
方法四:dictionary = dict(zip(list1, list2))
方法五:dictionary = dict.fromkeys(list1) # 该方法创建值为空的字典
3.删除字典
del dictionary
二、访问字典
1.单次访问
print(dictionary) # 打印输出字典所有键值对
print(dictionary['key']) # 根据键打印对应的值,键不存在时,报错KeyError
print(dictionary.get(key[, default=None])) # default用于指定当key不存在时,返回的默认值,若省略,则返回None
# 在实际使用时,字典类型的对象调用get方法使用默认值参数时不要添加default=,
# 否则会报TypeError: get() takes no keyword arguments的错误
2.循环遍历字典
1)根据字典的键遍历所有的值
for key in dictionary:
print(dictionary[key])
2)获取字典中所有元组记录,item()返回可遍历的键值元组
dict_items = dictionary.items() # dict_items为封装了元组列表的对象
for item in dictionary.items():
print(item)
for key, value in dictionary.items():
print(key, value)
3)获取所有键
dict_keys = dictionary.keys() # dict_keys为封装了由键组成的列表的对象
for key in dictionary.keys()
print(key)
4)获取所有值
dict_values = dictionary.values() # dict_values为封装了由值组成的列表的对象
for value in dictionary.values()
print(value)
三、添加、修改和删除字典元素
1.添加和修改元素
dictionary['a'] = 'A' # 字典中没有键'a'时,创建该键值对
dictionary['a'] = 'AA' # 字典中存在键'a'时,则修改'a'对应的值
dictionary.setdefault(key[, default=None])
# 当key不存在时,添加key以及对应的值,若没有指定default,默认None,返回None
# 当key存在时,不会对key对应的value作修改操作,返回key对应的原来的值
dictionary01.update(dictionary02) # 字典记录累加
# 将字典dictionary02合并到dictionary01中,若键相同,则此键的值取dictionary02的值作为新值
2.删除元素
1)删除字典中某一个元素
del dictionary[key]
value = dictionary.pop(key) # 移除键和对应的值,同时返回此键所对应的值
key, value = dictionary.popitem() # python2中随机返回并删除字典中的一对键和值
# python3中返回并删除字典中末尾的一对键和值
2)删除字典中全部元素
dictionary.clear() # 原字典变为空字典
四、字典推导式
使用字典推导式可以快速生成一个字典
语法(if条件为可选项):
new_dictionary = {key: value for item in 可迭代对象 if 条件}