元组和字典

一.元组
1. 认识元组
  1. 元组是不可变的(不支持增删改);

  2. 元组是有序的(支持下标操作);

  3. 元组的元素可以是任何类型的数据。

元组是不可变的列表:列表中和可变无关的操作,元组都支持

元组不只是不可变的列表:

1)只有一个元素的元素 ---- (元素,)

2)元组的()没有歧义的时候可以省略

3)使用多个变量直接获取元素

​ a.变量的个数和元组个数一致

​ b.变量个数小于元组中元素的个数,必须在某一变量前面加星号

获取元素的时候让不带星号的按位置先取元素,然后剩下的数据全部给带星号的变量(带星号的变量会变成一个列表)

2.元组的相关操作

1)下标获取元素和切片

t3 = ('长津湖', '战狼', '哈利波特', '黑客帝国')
print(t3[-1]) #('黑客帝国',)
print(t3[1:2]) #('战狼',)

2)遍历

t3 = ('长津湖', '战狼', '哈利波特', '黑客帝国')
for x in t3:
    print(x,end=',') # 长津湖,战狼,哈利波特,黑客帝国,
print()
for index in range(len(t3)):
    print(index, t3[index],end=';') # 0 长津湖;1 战狼;2 哈利波特;3 黑客帝国;

3)运算和比较

t1 = (1, 2, 3, 4, 5, 6, 7)
t2 = ('a', 'b')
print(t1 + t2) # (1, 2, 3, 4, 5, 6, 7, 'a', 'b')
print(t1 * 2) # (1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7)
print(t1 == t2)# False

3.元组的相关方法和函数
t1 = (1, 2, 3, 4, 5, 6, 7)
t2 = ('a', 'b')
#index---返回指定下标对应的元素
print(t1.index(5)) # 4
#count---返回指定元素在元组中出现的次数
print(t1.count(2))# 1
#sum---返回数字元组中元素和
print(sum(t1))# 28
#sorted----按照升序产生一个新元组
print(sorted(t1))# [1, 2, 3, 4, 5, 6, 7]
#max,min,len和列表中相同
print(max(t1), min(t1), len(t1)) # 7 1 7
#in---判断元组中是否存在指定元素
print(2 in t1)# True
二.字典
1.认识字典-----保存多个意义不同的数据

1)字典是容器型数据类型(序列),将{}作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是字典的一个元素)
2)字典是可变的(支持增删改),字典无序(不支持下标操作)
3)元素:字典必须是键值对
键:必须是不可变的数据 —如果可变会报错

# dict1 = {[1,2,3]:10}# TypeError: unhashable type: 'list'
# dict1={{'a':10}:10}# TypeError: unhashable type: 'dict'

值:任何类型的数据都可以

2.查询字典的值

1)查字典单个值

字典[键] ----获取对应的值-----键不存在会报错

字典.get(键)-----见不存在,会返回None

dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
print(dict1['scores']) # {'语文': 98, '数学': 100, '英语': 80}
# print(dict1['gender']) # KeyError: 'gender'
print(dict1.get('age')) # 21
print(dict1.get('gender')) # None
print(dict1.get('gender', '男'))# print(dict1.get('gender', '男'))

2)遍历

语法:

forin 字典:
    循环体
    
dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
for key in dict1:
    print(key,dict1[key])
'''
name 张明洋
age 21
scores {'语文': 98, '数学': 100, '英语': 80}
'''
3.增改

字典[键] = 值 -----如果键存在就是修改,不存在就是增加一个新的键值对

dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
print(dict1)
dict1['name']='徐望'
dict1['gender']='男'
print(dict1)
'''
{'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}, 'gender': '男'}
'''

字典.setdefault(键,值)------如果键存在,不修改;键不存在才会修改

dict1 = {'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
dict1.setdefault('name','张三')
print(dict1)
dict1.setdefault('breed','dog')
print(dict1)
'''
{'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}, 'breed': 'dog'}
'''
4.删除

del 字典[键]-------删除指定键对应的键值对

dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
print(dict1)
del dict1['name']
print(dict1)
'''
{'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
'''

字典.pop(键)—取出指定键对应的键值对

dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
dict1.pop('age')
print(dict1)
res=dict1['scores'].pop('数学')
print(dict1)
print(res)
'''
{'name': '张明洋', 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'name': '张明洋', 'scores': {'语文': 98, '英语': 80}}
100
'''
5.相关操作—针对键的操作

字典不支持+,*,<,>,<=,>=;

字典支持in和not in

键 in 字典 —判断字典中是否存在指定的键

6.相关函数

1)max,min,sum,sorted字典都支持,但是一般不用(操作对象都是键)

2)len(字典)

3)dict(数据)-------将指定数据转换成字典

要把数据转换成字典,数据必须满足一下要求:

a.数据本身必须是一个序列
b.数列中的元素有且只有两个元素的小序列
c.小序列中的第一个元素是不可变的数据

data1=['ab',(10,20),['name','zs']]
result=dict(data1)
print(result) # {'a': 'b', 10: 20, 'name': 'zs'}

补充:将字典转换成列表或者元组的时候,只会把字典的键取出来作为其中的元素

result={'a': 'b', 10: 20, 'name': 'zs'}
result=list(result) # ['a', 10, 'name']
result=tuple(result) # ('a', 10, 'name')
7.相关函数

字典.clear()-清空字典

字典.copy()-复制一个新的字典

字典.keys() -获取所有的键,返回一个序列

字典.values() – 获取所有的值,返回一个序列

字典.items() – 将字典的键值对转换成元组,以序列的形式返回

字典.update() ----同时添加多个键值对

d1={'a':10,'b':20,'c':30}
print(d1) # {'a': 10, 'b': 20, 'c': 30}
d2=d1.copy()
d2.clear()
print(d2){}
print(d1.keys()) # dict_keys(['a', 'b', 'c'])
print(d1.values()) # dict_values([10, 20, 30])
print(d1.items()) # dict_items([('a', 10), ('b', 20), ('c', 30)])
for x,y in d1.items():
    print(x,y)
'''
a 10
b 20
c 30
'''
print(d1) # {'a': 10, 'b': 20, 'c': 30}
d1.update({'d':40,'e':50})
print(d1) # {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假发别带歪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值