字典:是无序的,可变的键值对集合
表达方式
方式1:
{key:value,key:value.....}
方式2:
类调用 dict.fromkeys("abc",666) 字典类型
对象调用 dic.fromkeys("abc",666)实例化的字典对象
key不能重复,不然后面的会重复前面的,key必须是任意不可变类型
原因:Python的字典,采用的是Hash的方式实现的,
存储过程:先初始化一个表格,用来存放所有的值,根据给定的key值,通过某些操作,得到一个在hash表中的索引位置,根据索引位置,存储给定的值。
再次使用hash表,将key值转换为对应值的列表索引,并定位到列表位置获取值。
存在的意义:使查询效率变高
常用操作
增
dic[key] = value
当key在字典里不存在是,即为新增操作。
删
del dic[key]
这里的key一定要存在,否则报错
dic.pop(key[,default])
删除指定的键值对,并返回对应的值,如果key不存在,那么直接返回给定的default值,同时不做删除操作,如果也没有给定default值,则会报错
dic.poptime()
删除按升序排序后的第一个键值对,并已元组的形式返回该键值对。如果字典为空,则报错
dic.clear()
删除字典内所有的键值对,返回None,字典对象本身还是存在的,只不过内容被清空了。
del :是直接删除了字典
改
智能改值,不能修改key值。dic[key] = value
批量修改键值对
oldDic.update(newDic)
根据新的字典,批量更新旧字典中的键值对,如果旧字典没有对应的key,则新增键值对。
查找
获取单个值
方式1、dic[key] 如果key不存在,则报错
方式2、dic.get(key[,default]),如果key不存在,也不指定defaluta,则返回None,但不会报错
方式3、dic.setdefault(key[,default]),与上述唯一不同,它会在原字典里新增这个键值对。
获取所有的值
dic.keys()
获取所有的值
dic.values()
获取所有的键值对
dic.items()
这里Python2.x版本跟3不一样,2 是把结果当做列表,哪怕后期往字典里添加键值对也不影响已得到的结果,但3是可以的,主要把它当成了Dictionary view objects ,当字典发生改变时,它对应的也发生改变。
遍历
先遍历所有的keys,然后根据指定的key值,获取对应的值
先遍历所有的键值对,直接获取对应的值,又因为键值对的结果是元组,故可以拆包,直接写为
for k,v in dic.items():
print(k,v)
计算
len(d)
判定
in:用于判定key值存在否