字典的特征
-
通过键而不是通过索引来读取,字典有时也被称为关联数组或者散列表,它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但是不能通过索引来获取。
-
字典是任意对象的无序集合。字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序,这样可以提高查找顺序。
-
字典是可变的,并且可以任意嵌套。字典可以在原处增长或者缩短(无须生成一个副本),并且它支持任意深度的嵌套(即它的值可以是列表或者其他的字典)。
-
字典中的键必须唯一。不允许同一个键出现两次,如果出现了两次,则后一个值会被记住。
-
字典中的键必须不可变。可以使用数字、字符串或者元组,但不能使用列表。
创建
定义字典时,每个元素都包含两个部分”键”和”值”,并且在键和值之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一个大括号中。
dictionary={'key1':'value1',……,'keyn':'valuen'}
参数说明:
dictionary:表示字典名称
key:表示元素的键,必须是唯一的,并且不可变,可以是数字、字符串、元组。
vaule:表示元素的值可以是任何数据类型,不是必须唯一。
#创建空字典
dictionary = {}
或
dictionary = dict()
#通过映射函数创建字典
#zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象
#列表1:表示一个列表,用于生成指定要生成字典的键
#列表2:表示一个列表,用于指定要生成字典的值。
#如果list1和list2的长度不同,则与最短的列表长度相同
字典名称 = dict(zip(列表1,列表2))
#通过给定的键——值对创建字典
dictionary = dict(key1=value1,key2=value2,……)
#使用dict对象的fromkeys()方法创建值为空的字典
#list1:作为字典的键的列表
dictionary = dict.fromkeys(list1)
添加、修改元素
字典名[键名]=值
因字典中键名的唯一性,当键不存在时为创建,当键存在时为修改
删除
删除整个字典
del 字典名
删除字典全部元素
字典名.clear()
执行后,原字典将变为空字典
删除字典指定元素
del 字典名[键名]
#防止字典元素不存在,删除报错的改进
if 键名 in 字典名:
del 字典名[键名]
访问字典
直接使用print()函数
print(字典名)
根据键获取值
#普通获取
print(字典名['键名'])
#避免键不存在,出现异常
print(字典名['键名'] if ’键名‘ in 字典名 else ’字典中没有此键’)
使用字典对象get()方法获取指定键的值
字典名.get(键名[,default])
default为可选项,当指定的键不存在时,返回一个默认值,如果省略,则返回None
print(字典名.get('键名','字典中没有此键'))
遍历字典
获取字典的”键—值对”元组列表
字典名.items()
可以通过for循环遍历该元组列表
#取出键值列表
dictionary={'键1':'值1','键2':'值2','键3':'值3'}
for i in dictionary.items():
print(i)
#取出键和值
dictionary={'键1':'值1','键2':'值2','键3':'值3'}
for key,value in dictionary.items():
print(key ,value)
获取字典的”键”列表
字典名.keys()
获取字典的”值”列表
字典名.values()
字典推导式
import random
randomdict={i:random.randint(10,100) for i in range(1,5)}
print("生成的字典为",randomdict)
结果:
生成的字典为 {1: 47, 2: 47, 3: 52, 4: 29}