元组&字典
元组 tuple
# 使用多个变量同时获取列表或者元组的元素
# 当变量的个数小于元素的个数的时候,必须在某一个变量前加*
# 获取的时候先让不带*的变量按照顺序获取对应的数据,把剩下的全部保存到带*的变量中。
list1 = [10,20,30,40,50,60]
X,y,Z* = list1
print(x,y,z) # 10 20 [30,40,50,60]
X,y*,z = list1
print(x,y,z) # 10 [20,30,40,50] 60
x*,y,z = list1
print(x,y,z) # [10,20,30,40] 50 60
# 元组在没有歧义的情况下,()可以省略
t1 = 10,20,30
print(t1,type(t1)) # (10,20,30)
# 有歧义的情况 t1 = 23,33,43*2 ...
字典 dict
'''
当需要保存多个意义不相同的数据时用字典
字典是容器型数据类型(序列);将{}作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是一个元素):
{key1:value1,key2:value2, ...}
字典是可变的(支持增删改);字典无序(不支持下标操作)
元素的要求 - 元素是键值对
键的要求:任何不可变类型的数据可以作为键,一般使用字符串(见名知义);键唯一
值的要求:没有要求
'''
# 空字典
d1 = {}
print(d1,type(d1)) # {}
# 字典无序
print({a:10,b:20}=={b:20,a:10}) # True
dict的元素查找
'''
单个查找
字典[键] - 获取指定键对应的值,键不存在报错
字典.get(键) - 获取指定键对应的值,键不存在返回None
字典.get(键,默认值) - 获取指定键对应的值,键不存在返回默认值
'''
stu = {'name':'晓','age':20,'gender':'男','tel':'110'}
print(stu['name']) # 晓
print(stu.get('name')) # 晓
print(stu['score']) # 报错:keyError:'score'
print(stu.get('score')) # None
print(stu.get('score',0)) # 0
'''
遍历
for 变量 in 字典:
pass
'''
stu = {'name':'晓','age':20,'gender':'男','tel':'110'}
for i in stu:
print(i,stu[i],end=' ') # name 晓 age 20 gender 男 tel 110
增加修改
'''
字典[键] = 元素 # 当键存在时修改字典中键对应的值;当键不存在时在字典中新建一个键并赋予元素的值
字典.setdefault(键,值) - 添加键值对,字典中存在该键对字典无影响
'''
stu = {'name':'晓','age':20,'gender':'男','tel':'110'}
stu['name']='小'
print(stu) # {'name':'小','age':20,'gender':'男','tel':'110'}
stu['score']=100
print(stu) # {'name':'小','age':20,'gender':'男','tel':'110','score':100}
stu.setdefault('name','晓')
print(stu) # {'name':'小','age':20,'gender':'男','tel':'110','score':100}
stu.setdefault('height',180)
print(stu) # {'name':'小','age':20,'gender':'男','tel':'110','score':100,'height':180}
删除
'''
del 字典[键] - 删除指定键对应的键值对
字典.pop(键) - 取出指定键对应的值
'''
stu = {'name':'小','age':20,'gender':'男','tel':'110','score':100,'height':180}
del stu['height']
print(stu) # {'name':'小','age':20,'gender':'男','tel':'110','score':100}
stu.pop('score')
print(stu) # {'name':'小','age':20,'gender':'男','tel':'110'}
运算符
相对于列表,字典不支持:+、*、比较大小
字典推导式
'''
{表达式1:表达式2 for 变量 in 序列}
{表达式1:表达式2 for 变量 in 序列 if 条件语句}
'''
内置函数
| 函数 | 描述 |
|---|
| cmp(dict1, dict2) | 比较两个字典元素。如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1。 |
| len(dict) | 计算字典元素个数,即键的总数。 |
| str(dict) | 输出字典可打印的字符串表示。 |
| type(dict) | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
| dict(数据) | 将数据转换成字典。数据必须是一个序列且序列中的元素必须是有且只有两个元素的小序列,两个元素中的第一个元素是不可变的数据 |
方法
| 方法 | 描述 |
|---|
| dict.values(self) | 返回字典中所有的值 |
| dict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
| dict.setdefault(键,值) | 添加键值对,字典中存在该键对字典无影响 |
| dict.popitem() | 返回并删除字典中的最后一对键和值。 |
| dict.pop(键) | 删除指定键对应的键值对,返回指定键的值 |
| dict.keys() | 返回字典中所有的键 |
| dict.items() | 以列表返回可遍历的(键, 值) 元组序列 |
| dict.get(键,默认值) | 获取指定键对应的值,键不存在返回默认值 |
| dict.fromkeys(seq[, value]) | 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值。注意::fromkeys 方法只用来创建新字典,不负责保存。当通过一个字典来调用 fromkeys 方法时,如果需要后续使用一定记得给他复制给其他的变量。 |
| dict.clear() | 删除字典内所有元素 |
| dict.copy() | 返回一个字典的浅复制 |
| dict.has_key(key) | 如果键在字典dict里返回true,否则返回false 注意Python 3.X 不支持该方法。 |