#什么是元祖:元祖是一个不可变的列表(没有改的需求)

#======================================基本使用======================================
#1、用途:用于存放多个值,当存放的多个值只有读的需求 没有改的需求时用元祖最合适

#2、定义方式:在()内用,分割开多个任意类型的值
t=(1,3.1,'aaa',(1,2,3),['a','b'])
t=tuple(...)
res=tuple('hello')
res=tuple(['x':1,'y':2])
print(res)

#3、常用操作+内置的方法
#优先掌握的操作:
#1、按索引取值(正向取+反向取):只能取
t=('a','b',1)
t[0]=111

#2、切片(顾头不顾尾,步长)
t=('h','e','l','l','o')
res=[1:3] el
print(res)
print(t) 不可变 切边不会改变原值
#3、长度
t=('h','e','l','l','o')
print(len(t))
#4、成员运算in和not in
t=('h','e','l','l','o')
print('h' in t) True

#5、循环
t=('h','e','l','l','o')
for item in t:
print(item)

#======================================该类型总结====================================
#存多个值

#有序

#不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
元组的元素不可变 列表可变 指的是内存地址可以变
t=(1,'a',['x','y','z'])
print(id(t))
t[2][0]='X'
print(t)
print(id(t))

#掌握方法
t=('a','b','a')
print(t.index('a')) 下标是0
t.index('xxx')
print(t.count(a)) 一共两个

字典类型
#======================================基本使用======================================
#1、用途:用来存放多个(不同种类的)值

#2、定义方式:在{}内用逗号分开多个key:value的元素,其中value可以是热议数据类型,而key的功能通常是用来描述value的所以key通常是字符串类型,但其实key必须是不可变类型(int\float\str\tuple)
d={0:'x',1.3:'y','k1':'z',(1,2,3):'aaa'}
print(d[(1,2,3)])#输出字典中key为(1,2,3)的value
d=dict(...)
print(d[(1,2,3)])
d1={[1,2,3]:'aaa'}不可以这样定义

d=dict([('k1',1),('k2',2),('k3',3)]) #将这种数据类型转换成字典
print(d) 输出整个字典

d=dict((('k1',1),('k2',2),('k3',3)))
print(d) 换成元祖也可以 第一个值相当于key第二个值相当于value

l=[('k1',1),('k2',2),('k3',3)]
d={}
for t in l:
print(t) #取出三个小元祖
d[t[0]]

l=[('k1',1),('k2',2),('k3',3)]
d={}
for t in l:
k,v=t
d[k]=v
print(d)
d=dict(l)
print(d)

d=dict(x=1,y=2,z=3)
print(d)

#3、常用操作+内置的方法
#优先掌握的操作:
#1、按key存取值:可存可取
d={'x':1}
print(d['x']) #1
print(id(d))
d['x']=1111
print(d)
print(id(d))
key存在的情况下 id不变 说明字典是可变类型

key不存在情况下
d['y']=2222
print(d)
也可以在里面加值
l=['a','b']
l[2]='c'#报错 不能做赋值操作

索引不存在 列表不能往里面加值
字典可以在不存在的key里面加值

#2、长度len
d={'x':1,'y':2,'z':3}
print(len(d))
长度是3
#3、成员运算in和not in
d={'x':1,'y':2,'z':3}
print(1 in d) false
print('x' in d) true
字典的成员运算按照key来的

#4、删除
d={'x':1,'y':2,'z':3}
del d['y']
print(d)

d={'x':1,'y':2,'z':3}
res=d.pop('y') #返回y对应的那个值
print(res) #res为2
print(d) #y被删除

res=d.popitem()
print(res) #返回删除的那个key:value
print(d) #输出删除后d的值

字典是无序的popitem是随机删除
#5、键keys(),值values(),键值对items()
d={'x':1,'y':2,'z':3}
d.keys()输出key
print(list(d.keys()))
d.values()输出value
print(list(d.values()))
d.item()输出字典
print(list(d.items()))

#6、循环

for k in d.keys():
print(k)

for k in d:
print(k)#默认循环是直接输出key

print(list(d.keys()))
for v in d.values():
print(v)
print(list(d.values()))
for k,v in d.items():
print(k,v)
print(list(d.items()))

#======================================该类型总结====================================
#存一个值or存多个值

#有序or无序

#可变or不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)

#需要掌握的操作
d={'name':'egon','age':18,'sex':'male','hobblies':[1,2,3]}
v=d.get('namexxxx')#不存在key返回值为None不会报错
print(v)

v1=d.get('name')#返回值为value
print(v1)

update放法
d={'name':'egon','age':18,'sex':'male','hobblies':[1,2,3]}
d.update({'x':1,'name':"EGON"})
print(d) #更新d 没有key的添加 有key的修改(更新)

#fromkeys:需求是快速新造出一个字典,value的初始值全都为None,而key是来自于一个列表
keys=['name','age','sex']
d={}.fromkeys(keys,None) #keys是d中的key value都为None
print(d)
相当于下面代码:
keys=['name','age','sex']
d={}
for k in keys:
d[k]=None
print(d)

#setdefault

按照默认的操作形式
d={"x":1,"y":3}
d['x']=1111
d['z']=12345
存在就改值 不存在就加值

按照setdefault的形势
d={"x":1,"y":3}
res=d.setdefault('x':11111)#在key存在的情况下不修改值 会返回原值
print(d)
print(res)

res=d.setdefault('z',11111)#在key不存在的情况下增加一个新的值 会返回新增的值
print(d)
print(res)

#练习
s='hello alex alex say hello sb sb'
#d={'hello':2,'alex':2,'say':1,'sb':2}

d={}
words=s.split()
print(words)
for word in words:
#d[word]=words.count(word)#d['hello']=word.count('hello')#每次重复添加 优化操作 如下代码
d.setdefault(word,words.count(word))

print(d)
#['hello', 'alex', 'alex', 'say', 'hello', 'sb', 'sb']
#{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}

for word in words:
d[word]=words.count(word)
print(d)

print(words)
d['hello']=words.count('hello')
d['alex']=words.count('alex')
print(d)

补充元祖符号
t=(1,)
print(t,type(t))
对于元祖 只有一个元素后面必须加上逗号 不加逗号这个()就是包含的意思

name=input('>>:').strip()
res='my name is %s' %name
print(res.center(50,'*'))

两步并做一步
()的一个用法 他有这包含的 意思
name=input('>>:').strip()
print(('my name is %s' %name).center(50,'*'))

元祖&字典的更多相关文章

  1. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  2. python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍

    目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...

  3. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

  4. python-列表元祖字典集合

    列表 list = ["a", "b", "c", "d"]元祖 tup = (1, 2, 3, 4, 5 ) 1.元组 ...

  5. python基础学习笔记第四天 list 元祖 字典

    一 LIST方法 列表操作包含以下函数:1.cmp(list1, list2):比较两个列表的元素 2.len(list):列表元素个数 3.max(list):返回列表元素最大值 4.min(lis ...

  6. python 元祖字典集合

    一.元祖 1.用途:记录多个值,当多个值没有改变的需求,元祖不能修改,但元祖里的数据的数据可以修改. 2.定义方式:在()内用逗号分隔开多个任意值. 思考:如果定义一个只有一个一个值的元祖. # t ...

  7. 06 元祖 字典 集合set

    元组 定义: ti=() print(ti,type(ti)) 参数:for可以循环的对象(可迭代对象) t2=tuple(") # ('1', '2', '3') <class 't ...

  8. Python学习笔记---切片 列表 元祖 字典 集合

    列表[1,2,3,2]#[] 元祖(1,2,3,2)#() 字典{1:2,3:2}#{} 集合{1,2,3,2}#{} 1,集合与列表的区别,集合里不能有重复元素 2.字典与集合的区别,都是用花括号表 ...

  9. python入门(五):切片列表元祖字典

    1.切片 针对序列,使用切片可以获得我们想要的内容 序列:字符串.列表.元祖 特点:可以使用坐标获取某一个值.坐标是从0开始算 >>> s="0123456789" ...

  10. python04 列表 元祖 字典

    1.list 有序,元素可以被修改 li=[1,2,2,"am","123"] 列表中的元素可以是数字,字符串,列表等等 支持切片,切片结果为列表  li[3] ...

随机推荐

  1. ACM-生化武器

    Description在一个封闭的房间里,gogo给大家表演了他的屁遁术,人果然一下没影了,但是他留下的“生化武器”,却以每秒1米的速度向上下左右扩散出去.为了知道自己会不会被“毒”到,你果断写了个算 ...

  2. Android明密文切换

    前言: 在我们的登录界面经常会遇到查看自己输入密码是否正确,就会用到明密文切换 正文: 我们先写出xml文件文件中的代码,不用过多解释 <EditText android:layout_widt ...

  3. 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群

    在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...

  4. DRF项目之通过业务逻辑选择数据集和序列化器

    在REST后台开发中,我们需要通过业务逻辑来选择数据集或者序列化器. 选择数据集: # 重写get_queryset实现通过业务逻辑选择指定数据集 def get_queryset(self): '' ...

  5. 一百零四、SAP中ALV事件之十六,让ALV表格能点击修改

    一.上一篇我们写到生产的ALV表格,但是表格内容不支持修改,如果我们需要修改下图的数量,需要怎么操作呢 二.代码如下,设置 ls_fieldcat-edit = 'X'.   "允许编辑. ...

  6. RabbitMQ消息队列帮助类

    调用 //消息队列发消息 MqConfigInfo config = new MqConfigInfo(); config.MQExChange = "DrawingOutput" ...

  7. ubuntu在虚拟机下的安装 ~~~ Hadoop的安装及配置 ~~~ Hdfs中eclipse的安装

     前言 Hadoop是基于Java语言开发的,具有很好跨平台的特性.Hadoop的所要求系统环境适用于Windows,Linux,Mac系统,我们推荐选择使用Linux或Mac系统.而Linux系统则 ...

  8. java的JDBC的事务学习

    https://www.cnblogs.com/chy18883701161/p/11372089.html

  9. 【Android】家庭记账本手机版开发报告六

    一.说在前面  昨天 1.创建登入和注册界面:2.向数据库添加一张用户表  今天 用图标显示账单情况 问题 1.使用第三方库 hellochart,时添加依赖构建失败 2.在 chertFragmen ...

  10. redis qps监控

    最近有个客户反应redis的qps不准确,通过查看代码,发现我们的监控是调用的redis info里面的instantaneous_ops_per_sec 客户反应说自己压测了ns,但是从监控上看不到 ...