字典时python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典时无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
不可变类型:整型、字符串、元组
可变类型:列表、字典
字典两大特点:1、无序
2、键唯一
创建字典的两种方式:1、dic1 = {'name':'xiaoming','age':'15','sex':'male'}
2、dic2 = dict((('name','xiaoming'),('age',15),('sex','male'),))
或 dic2 = dict([['name','xiaoming'],['age',15],['sex','male'],])
增:
dic3 = {'name':'xiaoming'}
dic3['age'] = 15
print(dic3) #{'name':'xiaoming','age':15}
setdefault用法:
dic1 = {'name':'xiaoming'}
dic1['age'] = 15
print(dic1) #{'age':15,'name':'xiaoming'}
dic2 = dic1.setdefault('age',30)
print(dic2) #15 键存在,不改动,返回字典中相应的键对应的值
dic3 = dic1.setdefault('hobby','dance')
print(dic3) #dance 键不存在,在字典中增加新的键值对,并返回相应的值
查:(通过键去查找)
dic3 = {'age':18,'name':'xiaoming','hobby':'dance'}
print(dic3['name']) #xiaoming
print(dict3.keys()) #dict_keys(['age','name','hobby'])
print(list(dic3.keys())) #['age','name','hobby'] 取键
print(list(dic3.values())) #[18,'xiaoming','dance'] 取值
print(list(dic3.items())) #[('age',18),('name','xiaoming'),('hobby','dance')] 取键值对
改:(通过键去修改)
dic3 = {'age':18,'name':'xiaoming','hobby':'dance'}
dic3['age'] = 55
print(dic3) #{'age':55,'name':'xiaoming','hobby':'dance'}
update用法
dic4 = {'age':18,'name':'xiaoming','hobby':'dance'}
dic5 = {'1':'111','2':'222'}
dic4.update(dic5)
print(dic4) #{'age':18,'name':'xiaoming','hobby':'dance','1':'111','2':'222'}
print(dic5) #{'1':'111','2':'222'}
如果dic5中的键有和dic4中的键相同 则替换dic4中的内容
删:
dic6 = {'age':18,'name':'xiaoming','hobby':'dance'}
dic6.clear()
print(dic6) #{} 清空字典
del dic6['hobby']
print(dic6) #{'name':'xiaoming','age':'18'} 删除字典中的指定键值对
del dic6
print(dic6) #删除整个字典
pop用法 #删除字典中的指定键值对,并返回该键值对的值
ret = dic6.pop('name')
print(ret) #'xiaoming'
print(dic6) #{'age':18,'hobby':'dance'}