七 Dictionary(字典)
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
创建字典:
dic1={'name':'alex','age':36,'sex':'male'} dic2=dict((('name','alex'),)) print(dic1) print(dic2)
对应操作:
1 增
dic3={} dic3['name']='alex' dic3['age']=18 print(dic3)#{'name': 'alex', 'age': 18} a=dic3.setdefault('name','yuan') b=dic3.setdefault('ages',22) print(a,b) print(dic3)
2 查
dic3={'name': 'alex', 'age': 18} # print(dic3['name']) # print(dic3['names']) # # print(dic3.get('age',False)) # print(dic3.get('ages',False)) print(dic3.items()) print(dic3.keys()) print(dic3.values()) print('name' in dic3)# py2: dic3.has_key('name') print(list(dic3.values()))
3 改
dic3={'name': 'alex', 'age': 18} dic3['name']='alvin' dic4={'sex':'male','hobby':'girl','age':36} dic3.update(dic4) print(dic3)
4 删
dic4={'name': 'alex', 'age': 18,'class':1} # dic4.clear() # print(dic4) del dic4['name'] print(dic4) a=dic4.popitem() print(a,dic4) # print(dic4.pop('age')) # print(dic4) # del dic4 # print(dic4)
5 其他操作以及涉及到的方法
5.1 dict.fromkeys
d1=dict.fromkeys(['host1','host2','host3'],'Mac') print(d1) d1['host1']='xiaomi' print(d1) ####### d2=dict.fromkeys(['host1','host2','host3'],['Mac','huawei']) print(d2) d2['host1'][0]='xiaomi' print(d2)
5.2 d.copy() 对字典 d 进行浅复制,返回一个和d有相同键值对的新字典
5.3 字典的嵌套
av_catalog = { "欧美":{ "www.youporn.com": ["很多免费的,世界最大的","质量一般"], "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] }, "日韩":{ "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] }, "大陆":{ "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] } } av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来" print(av_catalog["大陆"]["1024"]) #ouput ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
.4 sorted(dict) : 返回一个有序的包含字典所有key的列表
dic={5:'555',2:'222',4:'444'} print(sorted(dic))
5.5 字典的遍历
dic5={'name': 'alex', 'age': 18} for i in dic5: print(i,dic5[i]) for items in dic5.items(): print(items) for keys,values in dic5.items(): print(keys,values)
还用我们上面的例子,存取这个班学生的信息,我们如果通过字典来完成,那:
dic={'zhangsan':{'age':23,'sex':'male'}, '李四':{'age':33,'sex':'male'}, 'wangwu':{'age':27,'sex':'women'} }