Python基础【day03】:字典(一)
本节内容
- 简述
- 语法
- 字典的使用
- 字典内置方法
一、简述
字典是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】:字典(一)的更多相关文章
- python基础之字典dict和集合set
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...
- Python基础数据类型-字典(dict)
Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...
- python基础之字典、集合
一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...
- Python基础知识---字典
现在在实习期间,好久没用Python了,今天在做Java项目时用的HashMap让我联想到了Python中的字典,就写一些Python字典的知识吧,复习复习. 字典: key --> valu ...
- python基础5 字典
一.字典 字典是python的基础数据类型之一:字典可以存储大量的数据,关系型数据. 同样他也是python中唯一的映射类的数据类型. 数据类型的分类: 可变的(不可哈希)数据类型:list,dict ...
- python基础_字典_列表_元组考试_day4
1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain'] li=['alex','eric','rain'] v="_".jo ...
- Python基础__字典、集合、运算符
之前讨论的字符串.列表.元组都是有序对象,本节则重点讨论无序对象:字典与集合.一.字典 列表是Python中的有序集合,列表中的序指的是列表中的元素与自然数集形成了一个一一对应的关系.例如L=['I' ...
- python基础类型—字典
字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必 ...
- Python基础-day03
写在前面 上课第三天,打卡: 不要让干净的灵魂染上尘埃,永远年轻.永远热泪盈眶 一.再谈编码 - 文件的概念 '文件' 是一个抽象的概念,是操作系统提供的外部存储设备的抽象,对应底层的硬盘:它是程序 ...
- Python 全栈开发二 python基础 字符串 字典 集合
一.字符串 1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串. >>ch = "wallace" >>ch1 = 'walla ...
随机推荐
- 阅读<构建之法>10、11、12章
第十章: 典型用户和场景对后面工作有什么帮助吗? 第十一章: 每日构建的目的是什么呢?有没有具体说明? 第十二章: 产品定位人群是否也局限了产品的可拓展性?
- 使用a标签实现文件的下载与保存
<a>标签的常规使用是定义超链接,用于从一个页面链接到另一个页面,并且需要指定链接目标href,除了定义超链接外,<a>还可以实现文件的保存,直接设置a标签的href属性,但是 ...
- ASP.NET Forms验证
/// <summary> /// 执行用户登录操作 /// </summary> /// <param name="config">授权配置信 ...
- 深入理解 Laravel 中 config 配置加载原理
Laravel的配置加载其实就是加载config目录下所有文件配置.如何过使用php artisan config:cache则会把加载的配置合并到一个配置文件中,下次请求就不会再去加载config目 ...
- 转《Angular4项目部署到服务器上刷新404解决办法》
刚遇到Angular4项目npm run build 后部署到服务器可以访问,但是刷新页面会出现404的错误!转载一大神的操作 解决angular2页面刷新后报404错误办法: 配置app.modul ...
- 使用highlightjs自定义markdown代码高亮
目录 概述 实现方法 概述 最近使用markdown来写一些技术文档和博客,觉得真心不错,这才是程序员该用的编辑器嘛~~ Mou在mac上的 markdown 编辑器,很简约,可惜Mou好像只支持标准 ...
- hive存储、数据模型、内部表
创建内部表 加一列元素 删除表
- javascript 中的后退和前进到上下一页
jsp页面中要返回到上一页可以使用的方法有: 一不刷新: window.history.back(); //返回上一页,这里是利用的浏览器的缓存,返回后数据不会刷新;下一页就用:window.his ...
- Ubuntu 16.04安装Maven
此篇为http://www.cnblogs.com/EasonJim/p/7139275.html的分支页. 前提:必须正确安装JDK. 一.通过二进制包(tar.gz)安装 下载: 进入下载列表:h ...
- MyBatis在表名作为参数时遇到的问题
之前在用MyBatis的时候没用过表名作为参数,最近使用到了. 基于注释使用MyBatis的Dao层代码如下: @Repository public interface Base1102Dao { @ ...