本节内容

    1. 简述
    2. 语法
    3. 字典的使用
    4. 字典内置方法

一、简述

字典是Python中的又一种数据结构,它是通过key-value的数据类型,跟我们小时候用的新华字典差不多,通过key去访问value

二、语法

stu_info = {
"xiedi":28,
"liuhailin":27,
"daiqiao":30,
"hanwenhai":25,
"chenqun":38
}

2、特性

①字典是无序的

②字典是通过key去访问value(元素不存在重复)

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
#问通过key值访问对应的元素
>>> stu_info["chenqun"]
38
>>>

三、字典的使用

1、增加

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> stu_info["chenqun"]
38
#新增
>>> stu_info["luoahong"]=32
>>> stu_info
{'hanwenhai': 25, 'daiqiao': 30, 'luoahong': 32, 'chenqun': 38, 'xiedi': 28, 'liuhailin': 27}

2、修改

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
#修改"xiedi"对应的value值,由28改为29
>>> stu_info["xiedi"]=29
#输出
>>> stu_info
{'hanwenhai': 25, 'daiqiao': 30, 'chenqun': 38, 'xiedi': 29, 'liuhailin': 27}

3、删除(del、pop、popitem)

del

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> del stu_info["chenqun"]
#结果输出
>>> stu_info
{'hanwenhai': 25, 'daiqiao': 30, 'xiedi': 29, 'liuhailin': 27}

特别提醒:如果是del stu_info的话,则是删除stu_info这个变量

pop(k)

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
#删除时给出提示
>>> stu_info.pop("liuhailin")
27
#输出结果
>>> stu_info
{'hanwenhai': 25, 'daiqiao': 30, 'chenqun': 38, 'xiedi': 28}

popitem()

随机删除字典中的一个元素

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
#随机删除的元素
>>> stu_info.popitem()
('hanwenhai', 25)
#输出结果
>>> stu_info
{'daiqiao': 30, 'chenqun': 38, 'xiedi': 28, 'liuhailin': 27}

4、查找

key值在字典中存在

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> "chenqun" in stu_info
True
>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> stu_info.has_key("daiqiao")  ##标准用法,在Python3和Python2.7都可以用
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'has_key'

以上这种用法,在Python3和Python2.7都可以用,但是下面这种情况只能在Python2.7上用,Python3已经废除了

get(k)

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
#存在则返回对应的value
>>> print(stu_info.get("daiqiao"))
30
>>> print(stu_info.get("hanwenhai"))
25

通过k获取value

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
#存在key返回value
>>> stu_info["liuhailin"]
27
#不存在key提示报错
>>> stu_info["luoahong"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'luoahong'

 小结:get(k)不存在key值,则返回None,通过key直接访问会报错,所以建议推荐用get(k)这个方法获取value

5、多级字典嵌套及操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
['全部免费,真好,好人一生平安''服务器在国外,慢,可以用爬虫爬下来']

四、字典的内容之方法

1、values()

返回字典中所有value,生成一个列表

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> stu_info.values()
#输出
dict_values([25, 30, 38, 28, 27])
>>>

2、keys()

返回字典中所有key,生成一个列表

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> stu_info.keys()
#输出结果
dict_keys(['hanwenhai', 'daiqiao', 'chenqun', 'xiedi', 'liuhailin'])

3、setdefault(k,v)

setdefault()表示去取字典中的key,如果取不到,则设置新值,相反如果取到,则返回原有默认值

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
#设置不存在的key
>>> stu_info.setdefault("luoahong",32)
32
>>> stu_info
#输出结果
{'hanwenhai': 25, 'daiqiao': 30, 'luoahong': 32, 'chenqun': 38, 'xiedi': 28, 'liuhailin': 27}
#设置存在的key
>>> stu_info.setdefault("chenqun",28)
38
#输出结果
>>> stu_info
{'hanwenhai': 25, 'daiqiao': 30, 'luoahong': 32, 'chenqun': 38, 'xiedi': 28, 'liuhailin': 27}
>>>

4、update(dict)

update()是把两个字典合并成一个新的字典,中间有交叉的key,更新替换成新值,没有交叉就直接创建

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> yhd={"luoahong":32,1:2,3:4}
>>> stu_info.update(yhd)
>>> stu_info
#输出
{1: 2, 3: 4, 'chenqun': 38, 'xiedi': 28, 'hanwenhai': 25, 'daiqiao': 30, 'luoahong': 32, 'liuhailin': 27}

注:以后提到更新(update),就是直接原有的字典或者列表上修改,添加(上面的例子就是在stu_info基础上更新的)

5、items()

把字典转换成列表

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> stu_info.items()
dict_items([('hanwenhai', 25), ('daiqiao', 30), ('chenqun', 38), ('xiedi', 28), ('liuhailin', 27)])

6、fromkeys(list,默认值)

初始化一个字典

>>> dict.fromkeys(["xiedi","liuhailin"],1)
{'xiedi': 1, 'liuhailin': 1}

特别提醒:创建多层会有浅copy的作用,所以不建议使用,只需要做了解即可

7、clear()

清空字典

>>> stu_info = { "xiedi":28, "liuhailin":27,"daiqiao":30,"hanwenhai":25,"chenqun":38}
>>> stu_info.clear()
>>> stu_info
{}

Python基础【day03】:字典(一)的更多相关文章

  1. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  2. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  3. python基础之字典、集合

    一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...

  4. Python基础知识---字典

    现在在实习期间,好久没用Python了,今天在做Java项目时用的HashMap让我联想到了Python中的字典,就写一些Python字典的知识吧,复习复习. 字典:  key --> valu ...

  5. python基础5 字典

    一.字典 字典是python的基础数据类型之一:字典可以存储大量的数据,关系型数据. 同样他也是python中唯一的映射类的数据类型. 数据类型的分类: 可变的(不可哈希)数据类型:list,dict ...

  6. python基础_字典_列表_元组考试_day4

    1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain'] li=['alex','eric','rain'] v="_".jo ...

  7. Python基础__字典、集合、运算符

    之前讨论的字符串.列表.元组都是有序对象,本节则重点讨论无序对象:字典与集合.一.字典 列表是Python中的有序集合,列表中的序指的是列表中的元素与自然数集形成了一个一一对应的关系.例如L=['I' ...

  8. python基础类型—字典

    字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必 ...

  9. Python基础-day03

    写在前面 上课第三天,打卡:  不要让干净的灵魂染上尘埃,永远年轻.永远热泪盈眶 一.再谈编码 - 文件的概念 '文件' 是一个抽象的概念,是操作系统提供的外部存储设备的抽象,对应底层的硬盘:它是程序 ...

  10. Python 全栈开发二 python基础 字符串 字典 集合

    一.字符串 1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串. >>ch = "wallace" >>ch1 = 'walla ...

随机推荐

  1. 使用github的感想

    github的仓库链接:https://github.com/liyan941016/test  github是一个基于git的代码托管平台,要想使用github第一步就要注册账户,然后要创建一个仓库 ...

  2. jisuanqi

    1.jisuanqi 2.https://github.com/12wangmin/text/tree/master 3.计算截图 7+8 清除 4.总结 通过课程设计,主要要达到两个目的,一是检验和 ...

  3. 【转】GPS定位准确度CEP、RMS

    转自:http://blog.sina.com.cn/s/blog_70f96fda0101lcb9.html CEP和RMS是GPS的定位准确度(俗称精度)单位,是误差概率单位.就拿2.5M CEP ...

  4. HTML DOM 学习笔记

    一.HTML DOM定义了所有HTML元素的对象和属性,以及访问他们的方法即:HTML DOM是关于如何获取,修改,添加,删除HTML元素的标准二.DOM节点1.分类整个文档是一个文档节点每个HTML ...

  5. [转帖]ASP.NET Core的Kestrel服务器

    ASP.NET Core的Kestrel服务器 https://cloud.tencent.com/developer/article/1023247 在这篇文章中: 何时使用Kestrel和反向代理 ...

  6. [cnbeta]iPhone 2018年全球出货2.25亿部:中国区下滑两成

    iPhone 2018年全球出货2.25亿部:中国区下滑两成 2019年01月22日 20:12 501 次阅读 稿源:快科技 0 条评论   https://www.cnbeta.com/artic ...

  7. TFS2018 linux Agent的安装

    1. 感谢徐蕾老师的文档,根据文档简单学会了TFS agent的安装,在此简单记录一下: 前置条件: CentOS7.4 or CentOS7.5的版本 安装的软件有git 2.17 dotnet s ...

  8. 自定义控件DataPager

    在最近的一个项目中,涉及到一个自定义翻页控制的控件,下面就这一个控件做详细的说明,这个自定义控件的主要作用是对数据源进行翻页控制,比如说:“上一页.下一页.首页.末页”等相关操作,由于在一个项目中有多 ...

  9. python学习笔记三——控制语句

    2.5 运算符与表达式 2.5.1 算术运算符和算术表达式 算术运算符包括四则运算符.求模运算符和求幂运算符. 算术运算符 加减乘除:+ - * / 表达式:x+y   x-y   x*y  x/y ...

  10. BZOJ2135 刷题计划(贪心+二分)

    相邻数作差后容易转化成将这些数最多再切m刀能获得的最小偏差值.大胆猜想化一波式子可以发现将一个数平均分是最优的.并且划分次数越多能获得的偏差值增量越小.那么就可以贪心了:将所有差扔进堆里,每次取出增量 ...