python中的数据类型之元组和字典
一、元组:俗称不可变的列表,又被称为只读列表。元组用小括号括起来,里面可以放任何数据类型的数据,查询可以,循环也可以,切片也可以,但就是不能修改。
注意:如果元组中只有一个元素,一定要加一个逗号,否则就不是元组。
>>> tu = (1,"Tanxu","A") #创建一个元组,用小括号括起来
>>> type(tu)
<class 'tuple'>
>>> tu1 = ("Tanxu")#当小括号内只有一个元素时,不是元组
>>> type(tu1)
<class 'str'>
>>> tu2 = ("Tanxu",)#元组只有一个元素时,要在该元素后加一个逗号
>>> type(tu2)
<class 'tuple'>
>>> tu3 = ()#定义一个空元组
>>> type(tu3)
<class 'tuple'>
注意:关于不可变,这里元组不可变的意思是子元素不可变【即元组没有修改操作】,而子元素内部的子元素可以改变,这取决于子元素是否是可变对象。【但是元组本身没有改变】
>>> tu[2] = "Tan" #对元祖进行修改会报错
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
tu[2] = "Tan"
TypeError: 'tuple' object does not support item assignment >>> tu4 = ("Tan","xu",[89,93,94])
>>> tu4[2][2] = 98 #可以对元素中子元素的子元素进行修改
>>> tu4
('Tan', 'xu', [89, 93, 98])
元组也有count、index、len等操作,用法同列表
二、字典:字典是以{}括起来的,内部使用key:value的形式来保存数据。如{“jay”:”周杰伦”,”jj”:”林俊杰”}
注意:字典的key必须是可哈希的,不可变的【列表是不可哈希的】
补充:什么是可哈希的(hashable)不该改变的(imutable)?【来自官方文档翻译】
如果一个对象在自己的生命周期中有一哈希值(hash value)是不可改变的,那么它就是可哈希的(hashable)的,因为这些数据结构内置了哈希值,每个可哈希的对象都内置了__hash__方法,所以可哈希的对象可以通过哈希值进行对比,也可以作为字典的键值和作为set函数的参数。所有python中所有不可改变的的对象(imutable objects)都是可哈希的,比如字符串,元组,也就是说可改变的容器如字典,列表不可哈希(unhashable)。我们用户所定义的类的实例对象默认是可哈希的(hashable),它们都是唯一的,而hash值也就是它们的id()。
>>> dic1 = {'name':'Tanxu','sex':'女','age':18}
>>> type(dic1)
<class 'dict'>
1、字典的相关操作:
1)增加:
>>> dic1 = {'name':'Tanxu','sex':'女','age':18}
>>> dic1['height'] = 160 #直接添加,如果key重复了,会替换掉原来的value
>>> dic1
{'name': 'Tanxu', 'sex': '女', 'age': 18, 'height': 160} >>> dic1.setdefault('weight',45)#使用setdefault()添加元素时,返回的是value值;如果字典中存在了这个key,则不再进行保存操作
45
>>> dic1
{'name': 'Tanxu', 'sex': '女', 'age': 18, 'height': 160, 'weight': 45}
2)删除:
>>> dic1.pop("weight")#删除一个元素,会返回这个元素对应的value值
45 >>> dic1.popitem()#删除一个元素,返回这个元素的key和value,返回的是一个元组。默认删除最后一个元素
('height', 160) >>> dic1.clear()#清空字典
>>> dic1
{}
3)查询:
>>> dic1 = {'name':'Tanxu','sex':'女','age':18}
>>> dic1['name'] #如果key值存在,会返回其对应的value值;如果key值不存在,程序会报错
'Tanxu' #get方法:1)可以通过key值获取value的值,如果key不存在,默认返回None
>>> print(dic1.get("Tanxu"))
None
>>> print(dic1.get('name'))
Tanxu #2)如果设置了默认返回值,则当key不存在时,返回该默认值
>>> print(dic1.get('height','160'))
160 #setdefault操作==》1、首先判断原来的字典中有没有这个key,如果没有则执行添加
# 2、用这个key去字典中查询,返回查到的结果
>>> ret1 = dic1.setdefault("name",1)
>>> print(ret1)
Tanxu >>> ret2 = dic1.setdefault("height",160)
>>> print(ret2)
160
4)d1.update(d2) ==》把d2的k-v更新到d1中
>>> dic1 = {'name':'Tanxu','sex':'女','age':18}
>>> dic2 = {"height":"160","weight":"45"}
>>> dic1.update(dic2)
>>> dic1
{'name': 'Tanxu', 'sex': '女', 'age': 18, 'height': '160', 'weight': '45'}
2、字典的其他相关操作
1)得到字典中的key,value以及键值对
print(dict1.keys()) #拿到所有的key,返回key的集合,该集合可迭代循环
##for key in dict1.keys(): #循环遍历key值
## print(key) print(dict1.values()) #拿到所有的value,返回value的集合,该集合可迭代循环
##for value in dict1.values(): #循环遍历value值
## print(value) print(dict1.items()) #拿到所有的键值对,每一项都是元组,元组集合也可迭代
##for item in dict1.items():#循环遍历key:value键值对
## print(item)#返回元组
## print(item[0]) #返回key
## print(item[1]) #返回value
#遍历字典
for k,v in dic1.items():
print(k)
print(v)
2)解构,解包
##解构 解包
a,b = (1,2) #即把a赋值为1,b赋值为2
print(a)
3)字典的嵌套
dic = {
"name":"Tanxu",
"age":"19",
"hobby":"listen music",
"frend1":{
"name":"李四",
"age":"22",
"hobby":"writting"
},
"frend2":{
"name":"王五",
"age":"19",
"hobby":"singing"
}
} print(dic["frend1"]["name"])
三、range操作(迭代循环)
语法:
range(开始,结束,步长)默认开始可以取到,结束取不到,步长可以为负数
实例:
1、循环:for i in range(10): #打印0 - 9
Print(i)
2、循环:for i in range(3,9): #打印3 - 8
Print(i)
3、循环:for i in range(3,10,2): #打印3,5,7,9
Print(i)
4、循环:for i in range(10,1,-1): #打印10,9,8,7,6,5,4,3,2
Print(i)
5、循环:for i in range(10,-10,-1): #打印10,9,8,7,6,5,4,3,2,1,0,-1,-2,……,-9
Print(i)
python中的数据类型之元组和字典的更多相关文章
- python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍
目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...
- python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍
目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...
- python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍
目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...
- python基础之数据类型/字符串/元组/列表/字典
Python 数据类型 数字类型: int整型,long 长整型(在python3.0里不区分整型和长整型).float浮点型:complex复数(python中存在小数字池:-5--257):布尔值 ...
- Python中的列表、元组、字典、字符串及切片操作
我们引入一个新的概念:数据结构 数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字或字符,甚至可以是其他数据结构,在python中,最基本的数据结构是序列,序列中的每个元素匾被分 ...
- python基础之数据类型之元组和字典
四.元组 1.用途:元组是不可变的列表,能存多个值,但只能取,不能改 2.定义:name = (‘alex’, ’egon’, ‘wxx’) 在()内用,分割开,可存放任意类型的值 强调:x = (‘ ...
- python学习第九讲,python中的数据类型,字符串的使用与介绍
目录 python学习第九讲,python中的数据类型,字符串的使用与介绍 一丶字符串 1.字符串的定义 2.字符串的常见操作 3.字符串操作 len count index操作 4.判断空白字符,判 ...
- python基础之 列表,元组,字典
other help(str.strip) #查看是否有返回值以及返回值类型[] :称为索引操作符 1.列表 列表相比字符串来说能存储大量数据的python的基本数据类型,并且也拥有字符串的一些方法( ...
- python 变量、列表、元组、字典
python 变量.列表.元组.字典 1.python 变量赋值 2.ptython 列表 3.python 元组 4.python 字典 1. Python变量赋值 1.1变量的命名规 ...
随机推荐
- ORACLE查询删除重复记录三种方法
本文列举了3种删除重复记录的方法,分别是rowid.group by和distinct,小伙伴们可以参考一下. 比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完 ...
- Spring MVC工程 无法拦截到url请求
一直没有办法拦截到url的请求,tomcat启动也没有看到Springmvc容器启动的任何说明.所以就建立了一个普通的servlet工程,可以访问url.再重新发布springmvc项目,访问url, ...
- oracle_great_integration_译文
website:https://www.oracle.com/corporate/features/great-integrations.html Great Integrations(伟大的整合) ...
- CSS z-index的用法
理清 position及z-index的用法: static : 无特殊定位,对象遵循HTML定位规则absolute : 将对象从文档流中拖出,使用left,right,top,bottom等属 ...
- 【LaTeX】E喵的LaTeX新手入门教程(3)
[LaTeX]E喵的LaTeX新手入门教程(3) 数学公式作者: 郭英东.sty 昨天熄灯了真是坑爹.前情回顾 [LaTeX]E喵的LaTeX新手入门教程(1)准备篇 [LaTeX]E喵的LaTeX新 ...
- STM32-F429ZIT6-关于驱动安装
第一步:下载驱动 1.个人百度云链接:http://pan.baidu.com/s/1dE8vxy5 密码:yow0 2.网站下载:这个还是直接百度吧. 第二步:驱动安装 注意:安装之前要先关闭安全监 ...
- 安卓Socket开发注意事项
如果要在安卓app里用到Socket通信,要满足: 1.在写代码的activity里import进Socket相关的包,这个很easy,如果你不知道要import什么包,也可以先不指定,可 ...
- 测试笔记:jsonp跨域接口测试
原先测过这个接口,前后端同源(域名,协议,端口相同),开发提供的文档: $.post("http://host/url", { data1: "data1", ...
- 战神CPU计算机硬件组装
今天本来更新DP常见优化的,但是下午土木学院吴书记找我组装电脑,晚上A题后,临时有一些事情,没来得及整理. 这里分享一下战神CPU(死垃圾)的组装. 一顿操作猛如虎,很艰难的装好机子了,发现吴书记被坑 ...
- Gym - 101334E 多叉树遍历
题意:给定一个字符串,求有多少种树与之对应,对应方式是,每次遍历左节点,没有了,就回溯: 分析:d[i,j] = sum(d[i+1,k-1],d[k,j]) (str[i]==str[k]); 坑点 ...