标签:
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容,我们在这里通过键找对应的值。
字典是python中唯一的映射类型,采用键值对形式存储数据。无序存储且key必须是可以哈希的。
可哈希是不可变类型:数字、字符串、元祖。
可变类型:列表、字典。
哈希是什么鬼? 哈希是什么鬼? 哈希是什么鬼? 哈希是什么鬼? 哈希是什么鬼? 哈希是什么鬼?
哈希是什么鬼? 不用管,我们只需要知道字典两大特点:无序,键唯一(so 天生去重)
创建字典:
方法一:
用dict(())里面放元组的方式:
dict1 = dict(((1, 2), )) dict2 = dict(((1, 3), (2, 4))) print(dict1) print(dict2)
{1: 2} {1: 3, 2: 4}
方法二:
dict3 = {1: 3, 2: 4, ‘hello‘: ‘girl‘} dict4 = {}
语法:
我们先认识几位大人物:{大力哥,金馆长,梁逸峰,局座}
好 这很关键 认识这几位大哥之后 我们来创建一个字典:
dic = { ‘bili01‘: ‘dalige‘, ‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili04‘: ‘juzuo‘ } print(dic)
下面对这个字典进行增、删、改、查操作:
增:
无序添加 (字典是无序的不可以用列表的nsert append操作)
dic = { ‘bili01‘: ‘dalige‘, ‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili04‘: ‘juzuo‘ } print(dic) dic[‘bili05‘] = ‘jinkela‘ print(dic)
{‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili01‘: ‘dalige‘, ‘bili04‘: ‘juzuo‘} {‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili01‘: ‘dalige‘, ‘bili04‘: ‘juzuo‘, ‘bili05‘: ‘jinkela‘}
改:
方法一:和列表类似,这里通过key来修改
dic = { ‘bili01‘: ‘dalige‘, ‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili04‘: ‘juzuo‘ } print(dic) dic[‘bili01‘] = ‘shounao‘ print(dic)
{‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili04‘: ‘juzuo‘, ‘bili01‘: ‘dalige‘} {‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili04‘: ‘juzuo‘, ‘bili01‘: ‘shounao‘}
方法二:
update() 当字典中有相同的元素是会被更新!!
dic = { ‘bili01‘: ‘dalige‘, ‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili04‘: ‘juzuo‘ } print(dic) dic2 = {‘bili05‘: ‘zhugeliang‘} dic .update(dic2) print(dic)
{‘bili02‘: ‘jinguanzhang‘, ‘bili01‘: ‘dalige‘, ‘bili04‘: ‘juzuo‘, ‘bili03‘: ‘liangyifeng‘} {‘bili02‘: ‘jinguanzhang‘, ‘bili05‘: ‘zhugeliang‘, ‘bili01‘: ‘dalige‘, ‘bili04‘: ‘juzuo‘, ‘bili03‘: ‘liangyifeng‘}
删:
pop()
指定参数key,删除对应value,并返回value值 (标准删除姿势!)
dic = { ‘bili01‘: ‘dalige‘, ‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili04‘: ‘juzuo‘ } print(dic) a = dic.pop(‘bili01‘) print(dic) print(a)
{‘bili02‘: ‘jinguanzhang‘, ‘bili04‘: ‘juzuo‘, ‘bili01‘: ‘dalige‘, ‘bili03‘: ‘liangyifeng‘} {‘bili02‘: ‘jinguanzhang‘, ‘bili04‘: ‘juzuo‘, ‘bili03‘: ‘liangyifeng‘} dalige
del
删除的是键值对,删除一切
clear()
清空
popitem()
随机删除键值对
查:
根据key查找,不用index了
>>> dic = { ‘bili01‘: ‘dalige‘, ‘bili02‘: ‘jinguanzhang‘, ‘bili03‘: ‘liangyifeng‘, ‘bili04‘: ‘juzuo‘ } >>> >>> "bili01" in dic #标准用法 True >>> dic.get("bili01") #获取 ‘dalige‘ >>> info["bili02"] #同上,但是看下面 ‘jinguanzhang‘ >>> info["bili06"] #如果一个key不存在,就报错,get不会,不存在只返回None Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: ‘bili06‘
OK 让我们熟悉一下字典的其他操作:
dic1 = {‘name‘:‘vast‘} print(type(dic1.keys())) print(list(dic1.keys())) print(list(dic1.values())) print(list(dic1.items()))
结果:
<class ‘dict_keys‘> [‘name‘] [‘vast‘] [(‘name‘, ‘vast‘)]
setdefault() 1.当字典中存在对应的键值key,则返回该key对应的value
2.当字典中没有对应的键值key,则返回参数里对应的value
dic1 = {‘name‘:‘vast‘} dic1[‘age‘] = 33 print(dic1) ret = dic1.setdefault(‘age‘, 45) print(ret) ret1 = dic1.setdefault(‘job‘, ‘IT‘) print(ret1)
结果:
{‘age‘: 33, ‘name‘: ‘vast‘} 33 IT
多级字典嵌套及操作(此处引用Alex老师的实例!未满18岁不要点开!):
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 [‘全部免费,真好,好人一生平安‘, ‘服务器在国外,慢,可以用爬虫爬下来‘]
[‘全部免费,真好,好人一生平安‘, ‘服务器在国外,慢,可以用爬虫爬下来‘]
sorted()
排序(默认按key排序)
sorted(dict.values())
value排序
循环dict:
#方法1 for key in info: print(key,info[key]) #方法2 for k,v in info.items(): #会先把dict转成list,数据里大时莫用 效率低 占内存
print(k,v)
标签:
原文地址:http://www.cnblogs.com/vastlee/p/5804082.html