# 元组:元组就是一个不可变的列表
# ======================================基本使用======================================
一、元组类型
# 1、用途: 当我们需要记录多个同种属性的值,并且只有读的需求没有改的需求时,应该用元组
# 2、定义方式:在()内用逗号分隔开多个任意类型的元素
t=('egon',) # 注意:当元组内只有一个元素时,必须加逗号,t=tuple(('egon',) )
# print(t,type(t))
# print(t[0])
# 数据类型转换:
# t=tuple('hello')
# print(t,type(t))
# 3、常用操作+内置的方法
#3.1 优先掌握的操作:
#1、按索引取值(正向取+反向取):只能取
# t=('a','b','c')
# t[0]='A'
#2、切片(顾头不顾尾,步长)
# t=('a','b','c')
# print(t[0:2])
#3、长度
# print(len(t))
#4、成员运算in和not in
# t=('a','b','c',(1,2,3))
# print((1,2,3) in t)
#5、循环
# t=('a','b','c',(1,2,3))
# for item in t:
# print(item)
# 3.2 需要掌握的操作
t=('a','b','b','c',(1,2,3))
# print(t.count('b'))
print(t.index('b',2,4))
# ======================================该类型总结====================================
# 存多个值
# 有序
# 不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
# ======================================基本使用======================================
二、字典类型
# 1、用途:记录多个不同属性的值
# 2、定义方式:在{}内用逗号分隔开多个元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key必须是不可变的类型(通常应该是str类型)
# dic={1:'aaa',1.3:'bbc',(1,2,3):'ccc','xxx':'ddd'} #dic=dict(...)
# dic={'x':1,'x':2,'x':3}
# print(dic)
# 数据类型转换:dict
li=(['name','egon'],('age',18),('gender','male'))
# dic={}
# for k,v in li: #k,v=('name','egon')
# dic[k]=v
dic=dict(li)
# print(dic)
# dic=dict(x=1,y=2,z=3)
# print(dic)
# 3、常用操作+内置的方法
#3.1 优先掌握的操作:
#1、按key存取值:可存可取
# dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# print(dic['name'])
# print(id(dic))
# dic['name']='EGON'
# print(dic,id(dic))
# dic['height']=1.81 # 如果key不存在则新增一组key:value
# print(dic)
# l=['a']
# l[1]='b'
#2、长度len
# dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# print(len(dic))
#3、成员运算in和not in # 判断是字典的key
# dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# print('name' in dic)
#4、删除
# dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# del dic['name']
# print(dic)
# t=dic.popitem()
# print(t,type(t))
# v=dic.pop('name')
# print(v)
#5、键keys(),值values(),键值对items()
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# >>> dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# >>> dic.keys()
# ['gender', 'age', 'name']
# >>> dic.values()
# ['male', 18, 'egon']
# >>> dic.items()
# [('gender', 'male'), ('age', 18), ('name', 'egon')]
keys=dic.keys()
vals=dic.values()
items=dic.items()
# print(keys)
# print(vals)
# print(items)
# print(list(keys))
# print(list(vals))
# print(list(items))
#6、循环
# for k in dic.keys():
# print(k)
# for k in dic:
# print(k)
# for v in dic.values():
# print(v)
# for k,v in dic.items():
# print(k,v)
#7. get取值
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# if 'xxx' in dic:
# print(dic['xxx'])
# else:
# print(None)
# v=dic.get('xxx')
# print(v)
# 3.2 需要掌握的操作
# dic.fromkeys()
li=['name','age','gender']
# dic={}
# for k in li:
# dic[k]=None
# print(dic)
# dic={}.fromkeys(li,None)
# print(dic)
# dic={'k1':1}.fromkeys(li,None)
# print(dic)
# dic={}.fromkeys('hello',)
# print(dic)
keys=['name','age','gender']
vals=['egon',18,'male']
# dic={}.fromkeys(keys,vals)
# print(dic)
# keys=['name','age','gender']
# vals=['egon',18,'male']
# dic={}
# for i in range(len(keys)):
# k=keys[i]
# v=vals[i]
# dic[k]=v
#
# print(dic)
# dic.update()
# old_dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# new_dic={'x':1,'name':'EGON'}
# old_dic.update(new_dic)
# print(old_dic)
# dic.setdefault(k,v):执行完毕后是为了保证字典中必须有这么一个k
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
# v=dic.setdefault('height',1.81) # 字典中没有'height'这个键,则新增
# print(dic)
# print(v)
v=dic.setdefault('name','EGON') # 字典中有'name'这个键,不修改字典
# print(dic)
print(v)
# setdefault的原理分析:
# k='name'
# v='EGON'
# if k not in dic:
# dic[k]=v
#
# print(dic)
# ======================================该类型总结====================================
# 存多个值
# 无序
# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)