四、Python数据类型(二)
一、布尔(Boolean)
布尔类型的数据只有两个:(真)True和(假)False。多用于条件语句或者是作为函数返回值。
二、字典(dictionary)
1、认识字典
将数据组织成键值对(key-value)的形式。例如:‘name’:‘小明’。
其中,name称为键(key),小明为值(value)。拿到键就能在字典中找到相对应的值。
注意: key必须是不可变的。value没有要求.可以保存任意类型的数据
字典的定义:字典名 = {key-value……},定义时可以不立即给出给出键值对,也即定义一个空字典。另外需要注意的是字典内的键值对是无序的。也就是说无法通过索引得到值。
#定义一个简单字典示例
dict = {'name':'小明','身高':'175cm'}
2、字典的增
通过 “字典名[key]=value”的方式添加,如果字典中没有该key则添加新的键值对到字典中,如果已经存在,这改变原来的value的值。
dict = {}
dict['name'] = '小明'
dict['hight'] = '175cm'
print(dict)
"{'name': '小明', 'hight': '175cm'}"
dict['name'] = 'daming'
"{'name': 'daming', 'hight': '175cm'}"
对于字典中已经存在了键,而又通过这个键添加新的value值,但是又希望不改变原来的值。这时候就需要用到setdefault()函数。它的作用是如果字典中已经存在键值对,添加失败。反之会将新的键值对添加进去。用法示例:
dict = {}
dict['name'] = '小明'
dict['hight'] = '175cm'
print(dict)
"{'name': '小明', 'hight': '175cm'}"
dict.setdefault('name','大明')
print(dict)
"{'name': '小明', 'hight': '175cm'}"
dict.setdefault('weight','60KG')
print(dict)
"{'name': '小明', 'hight': '175cm', 'weight': '60KG'}"
同时,setdefault()有返回值。如果成功在字典添加了键值对,返回添加的数据,如上例中的“60KG”,添加失败返回字典中对应的值,如“小明”。
3、字典的删
删除使用pop函数;示例:
person ={ 'name': '小明', 'hight': '175cm', 'weight': '60KG'}
person.pop('name')
print(person)
还可以使用popitem,资料显示这个函数是随机删除的,但是在Python3.6.7版本的开发环境中一直删除的是最后一个。
person ={ 'name': '小明', 'hight': '175cm', 'weight': '60KG'}
person.popitem()
print(person)
"{'name': '小明', 'hight': '175cm'}"
4、字典的查
1)通过键查询。存在返回对应的value,不存在报错。
person = { 'name': '小明', 'hight': '175cm', 'weight': '60KG'}
ret = person['name']
print(ret)
2)get();通过健来查看,如果这个健不在这个字典中.就会返回None;另外,可以设置找不到对应键时的提示的语句,也就是返回值。
person = { 'name': '小明', 'hight': '175cm', 'weight': '60KG'}
ret = person.get('name')
ret2 = person.get('qian','查无此项')
print(ret)
print(ret2)
'小明'
'查无此项'
5、字典的改
第一种跟添加字典内容用的方法一样,不再多说。字典名[key]=value。
第二种方法是使用update函数。同样的也是字典里有了就修改原值,没有就添加新的值。而且update能够批量添加或者修改数据。
person = { 'name': '小明', 'hight': '175cm', 'weight': '60KG'}
person.update({'sex':'男','number':'','name':'大明'})
print(person)
"{'name': '大明', 'hight': '175cm', 'weight': '60KG', 'sex': '男', 'number': '10110'}"
6、字典的其他操作
1)获取字典的所有键,keys()。将所有键放在列表中返回。
person = { 'name': '小明', 'hight': '175cm', 'weight': '60KG'}
ret = person.keys()
print(ret)
"dict_keys(['name', 'hight', 'weight'])"
2)获取字典的值,values()。返回值是值的列表。
person = { 'name': '小明', 'hight': '175cm', 'weight': '60KG'}
ret = person.values()
print(ret)
"dict_values(['小明', '175cm', '60KG'])"
3)获取字典的键值对,items()。返回键值对的列表。
person = { 'name': '小明', 'hight': '175cm', 'weight': '60KG'}
ret = person.items()
print(ret)
"dict_items([('name', '小明'), ('hight', '175cm'), ('weight', '60KG')])"
7、字典嵌套
原则:保证key是不可变的就行了。只要key不变,随便嵌套吧。示例:
dict = {
'country':'中国',
'province':{'p1':'湖北','p2':'湖南','p3':'上海'},
'citys':['北京','上海','深圳']
}
print(dict)
三、集合(set)
1、集合介绍
集合内元素是不可变的,每个元素都是独一无二的,而且是无须的。所以常用来去重。
set1 = {1,'','abc',True,1}
print(set1)# {'2', 1, 'abc'}
set2 = {'','abc',True,1}
print(set2)#{True, '2', 'abc'}
set3 = {'','abc',False,1,0}
print(set3)#{False, 1, '2', 'abc'}
set4 = {0,'','abc',False,1,0}
print(set4)#{0, 1, '2', 'abc'}
集合内同时有1和True时,从左起先找到那个显示那个。0和false也是同样的情况。
2、集合的增删查改
增用add 和update
s = {"刘嘉玲", '关之琳', "王祖贤"}
s.add("郑裕玲")
print(s)
s.add("郑裕玲") # 重复的内容不会被添加到set集合中
print(s)
s = {"刘嘉玲", '关之琳', "王祖贤"}
s.update("麻花藤") # 迭代更新
print(s)
s.update(["张曼⽟", "李若彤","李若彤"])
print(s)
"""{'郑裕玲', '刘嘉玲', '王祖贤', '关之琳'}
{'郑裕玲', '刘嘉玲', '王祖贤', '关之琳'}
{'刘嘉玲', '花', '藤', '关之琳', '麻', '王祖贤'}
{'张曼⽟', '刘嘉玲', '花', '李若彤', '藤', '关之琳', '麻', '王祖贤'}"""
删除
s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
item = s.pop() # 随机弹出⼀个.
print(s)
print(item)
s.remove("关之琳") # 直接删除元素.不存在这个元素. 删除会报错
print(s)
s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和字典区别
修改;set集合中的数据没有索引。 也没有办法去定位⼀个元素。所以没有办法进⾏直接修改。我们可以采⽤先删除后添加的⽅式来完成修改操作。
s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
# 把刘嘉玲改成赵本⼭
s.remove("刘嘉玲")
s.add("赵本⼭")
print(s)
查询;集合是可迭代对象,可以通过循环获取集合内的元素。
3、集合的交,并等操作
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
# 交集
# 两个集合中的共有元素
print(s1 & s2) # {'⽪⻓⼭'}
print(s1.intersection(s2)) # {'⽪⻓⼭'}
# 并集
print(s1 | s2) # {'刘科⻓', '冯乡⻓', '赵四', '⽪⻓⼭', '刘能'}
print(s1.union(s2)) # {'刘科⻓', '冯乡⻓', '赵四', '⽪⻓⼭', '刘能'}
# 差集
print(s1 - s2) # {'赵四', '刘能'} 得到第⼀个中单独存在的
print(s1.difference(s2)) # {'赵四', '刘能'}
# 反交集
print(s1 ^ s2) # 两个集合中单独存在的数据 {'冯乡⻓', '刘能', '刘科⻓', '赵四'}
print(s1.symmetric_difference(s2)) # {'冯乡⻓', '刘能', '刘科⻓', '赵四'}
s1 = {"刘能", "赵四"}
s2 = {"刘能", "赵四", "⽪⻓⼭"}
# ⼦集
print(s1 < s2) # set1是set2的⼦集吗? True
print(s1.issubset(s2))
# 超集
print(s1 > s2) # set1是set2的超集吗? False
print(s1.issuperset(s2))
集合代码参考自:pythonav.com
四、元祖(tuple)
元祖,数据不可变的数据的集合。集合内的数据只允许查看,不允许删除和修改值。需要注意的是,这里的不可变是子元素不可变. 而子元素内部的子元素是可以变,比如说列表和字典, 这取决于子元素是否是可变对象。而且,元祖内只有一个元素是要多加一个逗号。
元祖通过索引访问元素:
tuple1 = ('w','我','你','')
print(tuple1[0],tuple1[1],tuple1[2])
'w 我 你'
元祖是可迭代类型数据,可以使用循环读取元素值:
tuple1 = ('w','我','你','')
for item in tuple1:
print(item)
元祖可以切片:
tuple1 = ('w','我','你','')
tu = tuple1[2:]
print(tu)
四、Python数据类型(二)的更多相关文章
- python基础3 ---python数据类型二
ython基础 一.python数据类型 ------列表(list) 1.定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性:可存放多个不同类型的值:可修改指定索 ...
- python 数据类型二 (列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- python数据类型二
阅读目录 1.列表的去嵌套 2.元组 3.range 列表的增删改查 一,增: 注意 list和str是不一样的,lst可以发生改变,所以直接就在原来的对象上进行可操作 追加模式 lst = ['麻 ...
- python数据类型二(列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- 万恶之源 - Python数据类型二
列表 列表的介绍 列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如JS中的数 组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各 ...
- Python学习(四) Python数据类型:序列(重要)
插播一下,先了解一下Python的数据类型,Python现有的数据类型有好多,最重要的有列表.元组.字典 列表:我觉得可以对应java中的数组 list=['physics', 'chemistry' ...
- 四.python数据类型,语句
Python基础 阅读: 120476 Python是一种计算机编程语言.计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行 ...
- python数据类型(二)
跟着慕课网练习的,一些简单的知识点如下
- 二、Python数据类型(一)
一.Python的基本输入与输出语句 (一)输出语句 print() 示例: print('你好,Python') print(4+5) a = 10 print(a) 输出的内容可以是字符串,变量, ...
- 二十四. Python基础(24)--封装
二十四. Python基础(24)--封装 ● 知识结构 ● 类属性和__slots__属性 class Student(object): grade = 3 # 也可以写在__slots ...
随机推荐
- Linux 下如何修改用户名(同时修改用户组名和家目录)
有时候,由于某些原因,我们可能会需要重命名用户名.我们可以很容易地修改用户名以及对应的家目录和 UID.-- Shusain 本文导航◈ 修改用户名12%◈ 修改家目录43%◈ 更改用户 UID52% ...
- ui component 是一个前端 mvc 开发框架
- btcpool之BlockMaker
一.简介 BlockServer将StratumServer发送的solvedshare数据(块头和coinbase交易)与GbtMaker发送的rawgbt数据(其他交易)一起组装成一个块,然后通过 ...
- 2019年IntelliJ IDEA 最新注册码,亲测可用(截止到2020年3月11日)
2019年IntelliJ IDEA 最新注册码(截止到2020年3月11日) 操作步骤: 第一步: 修改 hosts 文件 ~~~ 在hosts文件中,添加以下映射关系: 0.0.0.0 acco ...
- python点点滴滴
python点点滴滴 1 self 使用python编程实现邮箱登录时,遇到使用self的情况,在此做简要记录. 参考链接: https://sjolzy.cn/Why-should-self-Pyt ...
- java 写一个JSON解析的工具类
上面是一个标准的json的响应内容截图,第一个红圈”per_page”是一个json对象,我们可以根据”per_page”来找到对应值是3,而第二个红圈“data”是一个JSON数组,而不是对象,不能 ...
- #WEB安全基础 : HTTP协议 | 0x16 HTTPS:证书,证书,全是证书
现在想做点什么事都需要证书,要不就会让我们回忆起一个典故:滥竽充数 HTTPS使用了公开密钥加密,如何保证公开密钥就是真正的公开密钥呢?攻击者可能会替换公开密钥,这时候就需要验证,所以它采用了数字证书 ...
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [app2.xml]: Instantiation of bean failed; nested exception is org.spr
在学习spring整合hubernate时遇到的问题.c3p0遇到了一个问题,老连不上,显示java.lang.NoClassDefFoundError:com.mchange.v2.ser.Indi ...
- Grunt搭建自动化web前端开发环境--完整流程
Grunt搭建自动化web前端开发环境-完整流程 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前 ...
- talend工具中往oracle插数据报ORA-01461: can bind a LONG value only for insert into a LONG colum
今天使用talend往oracle插数据报ORA-01461: can bind a LONG value only for insert into a LONG column 数据源是mysql,开 ...