Python学习 day05
数据类型划分
数据类型可分为:可变数据类型,不可变数据类型
不可变数据类型:bool、int、str、元祖 -- 不可变数据类型又称为可哈希的
可变数据类型:list、dict、set -- 不可哈希的
dict
key 必须是不可变数据类型,即可哈希的
value 可以是任意数据类型
dict 特点:
- key的查询是通过二分查找方式进行的,因此查询速度很快
- 用于存储大量关系型数据
- 无序的
1、增
- 直接赋值,dic[键] = 值,如果原来不存在该键则添加,有则值覆盖
- setdefault(k, d=None) -- 有该键则不做改变,没有则添加该key,并赋默认值,默认值不设置默认为None。例:
dic = {
'name': 'tangtang',
'age': 18,
'gender': 'female'
}
dic.setdefault('age', 20)
dic.setdefault('hobby')
dic.setdefault('height', 170)
print(dic)
结果:

2、删
- pop(k, d=None) -- 按键删除,返回key对应的value。源代码注释:
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
通常习惯设置d = None
- popitem() -- 随机删除,以元祖形式返回键值。源代码注释:
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
以元祖形式返回键值。源代码注释:
- del dic[键] -- 没有该键会报错
- del dict变量名 -- 删除整个dict
- clear() -- 清空字典
3、改
- 直接修改,dic[键] = 值,没有则增加,同‘增’
- update(E=None, **F) -- 括号中的内容更新原dict,仔细阅读源代码注释:
D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
4、查
- dict.keys() -- 得到所有的键
- dict.values() -- 得到所有的值
- dict.items() -- 得到所有的键值对,以set中嵌套2-tuple展示
- for ... in ... :
1、for i in dict: -- i 循环的是键
2、for i in dict.keys -- 同上,循环键
3、for i in dict.values -- 循环值
3、for i in dict.items() / for k, v in dict.items() -- 循环键值
- 获取dict中某个键的值,可以直接使用dict[键],但在不存在该键的情况下会报错,无解,而get方法不同
- dict.get(k, d=None) -- 获取某个键的值,这种用法在没有该键时不会报错,默认返回None,可自定义。源代码注释:
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
最后,对dict的嵌套不再细说
小知识
- 有 a = 1, b = 2,在python中如何用最简单的方式将a、b值互换:
a, b = b, a 这种方式是最简单的,也是让人容易理解的方式,或者在没学其他语言前,应该就觉得是这么写吧。底层具体的封装没去查
可看出python程序比java、c都简单得多了,程序也不容易出错
还包括:a, b = 1, 2 / a, b = (1, 2) / a, b = [1, 2] / a, b = [1, 2], [3, 4]
等,都是合理的赋值方式
- for ... in ... 循环,如果循环序列是字符串,则在开始循环时就已经固定循环内容,即使循环中对字符串做了修改操作,循环内容依然是原字符串。例:
s = 'abcdabc'
for i in s:
print(i)
s = ''
print(s)
结果:

这是因为字符串是不可变类型,在循环过程中虽然对字符串做了修改,只是变量指向了新的字符串,原字符串依然在内存中,循环的依然是原字符串
Python学习 day05的更多相关文章
- Python学习day05 - Python基础(3) 格式化输出和基本运算符
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- python学习 day05打卡
今天可变学习的主要内容是 : 本节主要内容: 1.字典的简单介绍 2.字典增删改查和其他操作 3.字典的嵌套 一.字典的简单介绍 字典(dict)是pytho中唯一的一个映射类型.它是以{}括起来的键 ...
- python学习之旅
python学习分类 python基础 +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- Python 学习小结
python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- Python学习记录day6
title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...
随机推荐
- what is diff. b/w app state & session state
Application state is a data repository available to all classes in an ASP.NET application. Applicati ...
- 编写高质量代码改善C#程序的157个建议——建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的
建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的 在建议50中,我们将C#中的类型分为:普通类型和继承了IDisposable接口的非普通类型.非普通类型除了包含那些托管资源的类型外, ...
- 我用Django搭网站(2)-QQ登录
接入QQ登录前,网站需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权. 第一步:准备阶段 打开QQ互联,并登录你的QQ账号.再点击导航上的" ...
- docker run hello-world失败
提示镜像拉取失败,解决方案 到 https://cr.console.aliyun.com/ 注册一个账户 列表中就有 加速器 启动 Docker 端 右键 选择配置 在Docker Dae ...
- dubbo 安装部署Windows
1 安装zookeeper 2 安装dubbo 1 下载源码 https://github.com/alibaba/dubbo 2 编译 mvn clean package install -D ...
- 小规模kvm宿主机管理-webvirtmgr安装
1.前言WebVirtMgr是近两年来发展较快,比较活跃,非常清新的一个KVM管理平台,提供对宿主机和虚机的统一管理,它有别于kvm自带的图形管理工具(virtual machine manager) ...
- Jmeter_远程启动
Jmeter 是Java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误. 其实,Jmeter的 ...
- Java面向对象之多态(成员访问特点) 入门实例
一.基础概念 多态的调用方式在子父类中的特殊体现. 1.访问成员变量特点: 当子父类中出现同名成员变量时. 多态调用时,编译和运行都参考引用型变量所属的类中的成员变量. 即编译和运行看等号的左边. 2 ...
- python3入门之列表和元组
获得更多资料欢迎进入我的网站或者 csdn或者博客园 前面一张主要学习了Python的安装,以及第一个程序helloword的编写,以及简单的输入和输出函数,这章主要介绍序列,列表,元组 序列 这章 ...
- c语言数据结构学习心得——数据结构基本概念
1.数据>数据元素>数据项 数据的基本单位是数据元素,数据元素的基本单位是数据项 2.运算的定义->针对逻辑结构 集合:同属于一个集合,无其他关系.(数学上的集合) 线性结 ...