字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算机的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型 如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
#创建字典 dict1 = {'name':'刘','age':'19','sex':'男'} dict2 = dict((('name','alex'),)) print(dict1) print(dict2) #对应的操作 # 1、增 dict3 = {} dict3 = {'name':'alex'} dict3['age'] = 18 print(dict3) #{'name': 'alex', 'age': 18} a = dict3.setdefault('name','yuan') #setdefault 如果字典里有这个键,不做任何改变,没有就加进去,并且返回键对应的值 print(dict3) b = dict3.setdefault('hobby','gril') print(a,b) print(dict3) #2、查 dict4 = {'name':'alex','age':'18'} print(dict4['name']) # print(dict4['names']) #字典里没有的键运行会报错 print(dict4.get('age',False)) # get没有的键返回括号里所附加的布尔值 print(dict4.get('ages',False)) print(dict4.items()) # 取出字典里所有的键值对 print(dict4.keys()) # 取出字典里所有的键 print(dict4.values()) # 取出字典里所有的值 print('name' in dict4) # 判断键名在不在字典里 py2:dict4.has_key('name') print(list(dict4.values())) # 将字典里的值取出并创建成列表 #3、改 dict5 = {"name":'alex','age':18} dict5['name'] = 'alvin' dict6 = {'sex':'male','hobby':'girl','age':36} dict5.update(dict6) # update 将字典6添加到字典5中,键名相同的以括号中字典的键所对应的值为主 print(dict5) #4、删 dict7 = {'name':'alex','age':18,'class':1} dict7.clear() # 不删除,只是清空字典 print(dict7) del dict7['name'] # 通过键名删除 print(dict7) a = dict7.popitem() # 随机删除一个键值对 print(a,dict7) print(dict7.pop('age')) # 通过键名删除并返回该键值对的值 print(dict7) del dict7 # 在内存中删除字典 print(dict7) # 5、其他操作以及涉及到的方法 # 5.1 dict.fromkeys(X,Y) 将Y整体逐个赋给X,Y不可拆分,X必须拆分 d1 = dict.fromkeys(['host1','host2','host3'],'Mac') print(d1) d2 = dict.fromkeys(['host1','host2','host3'],['Mac','huawei']) print(d2) d1['host1'] = 'xiaoming' print(d1) # d2['host1'][0] = 'xiaomi' # 浅拷贝 print(d2) # 5.2 sorted(dict):返回一个有序的包含字典所有的key的列表 dic = {5:'555',6:'666',1:'111'} print(sorted(dic)) # 5.3字典的遍历 dic1 = {'name':'alex','age':18} for i in dic1: print(i,dic1[i]) for items in dic1.items(): print(items) for keys,values in dic1.items(): print(keys,values)