码迷,mamicode.com
首页 > 编程语言 > 详细

Start_Learning_Python 04 字典

时间:2016-08-24 18:58:11      阅读:338      评论:0      收藏:0      [点我收藏+]

标签:

字典一种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)
View Code
{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)
View Code
{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)
View Code
{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)
View Code
{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
View Code

技术分享

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 
[全部免费,真好,好人一生平安, 服务器在国外,慢,可以用爬虫爬下来]
View Code

[‘全部免费,真好,好人一生平安‘, ‘服务器在国外,慢,可以用爬虫爬下来‘]

技术分享

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) 

 

Start_Learning_Python 04 字典

标签:

原文地址:http://www.cnblogs.com/vastlee/p/5804082.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!