python数据类型——字典表dict和元组tuple基本操作举例
* 字典表dict1. 字典表dict的声明* --------- ① 花括号{} 声明法* --------- ② dict函数声明法2. 字典表dict的操作* --------- ① 值的获取d['键']* --------- ② 字典的合并 d.update()* --------- ③ 删除某键值对 d.pop(‘键’)3. 字典表dict的属性* --------- ① 获得所有键.keys()* --------- ② 获得所有值.values()* --------- ③ 获得所有键值对.items()4. 字典表dict如何排序* --------- ① 将.keys()放入列表* --------- ② 使用全局函数.sorted()5. 字典表dict支持嵌套* 元组tuple1. 元组tuple的声明* --------- 一个元素元组的声明2. 元组的输出与list转换3. 元组的检索.index(val)与统计.count(val)4. namedtuple(‘名’,属性列表)总结刚开学,最近真的是超级忙🐶,上个周末好不容易休息,还熬夜看完了《侠探简不知》🤣,最喜欢那句“赵兄请把大家都召集起来吧,我要公布真相了”!被中国武侠版柯南的探案推理卡得死死的,当然很多不太符合现代现实的推理请勿喷,毕竟武侠,那是来无影去无踪刀如闪电御剑飞行。(⊙o⊙)…貌似有点走错片场,回头在我的豆瓣上详评✍️。下面👇开启最近一节课的字典表与元组的基本操作吧!
* 字典表dict
字典的存储是键值对,类似于我们惯用的字典,可查找,可访问,但不支持原位改变。使用字典表的目的就是利用键来访问某个值。
1. 字典表dict的声明
* --------- ① 花括号{} 声明法
>>> d={"name":"carla","age":20,"job":"student"} # 字典的内容用花括号 >>> d["name"] #用中括号查询或调取数据'carla'>>> d.get('age')20>>> d.get('gender') # 这种方式不会报错,可以设置默认返回值>>> d.get('gender','female')'female'
形式:
“键”:值
* --------- ② dict函数声明法
>>> somebody=dict(name='carla',age=20,job='student')>>> len(somebody) # 长度统计3
形式:
通过dict构造函数来声明。注意这里键不用写引号,默认是字符串的处理方式,键与值用 “=” 连接。
2. 字典表dict的操作
* --------- ① 值的获取d[‘键’]
>>> somebody=dict(name='carla',age=20,job='student')>>> somebody['job']'student'
注:
dict 用键访问,顺序是随机的。
* --------- ② 字典的合并 d.update()
>>> somebody=dict(name='carla',age=20,job='student')>>> fr={'from':'中国'} # 注意字典名和键的名不能一样>>> somebody.update(fr)>>> somebody{'name': 'carla', 'age': 20, 'job': 'student', 'from': '中国'}
当然
,dict还可以通过以下👇方式补充:
>>> somebody{'name': 'carla', 'age': 20, 'job': 'student'}>>> somebody['from']='中国' # 不存在的键会自动insort,列表没有这个功能>>> somebody{'name': 'carla', 'age': 20, 'job': 'student', 'from': '中国'}
* --------- ③ 删除某键值对 d.pop(‘键’)
>>> somebody{'name': 'carla', 'age': 20, 'job': 'student', 'from': '中国'}>>> somebody.pop('from')'中国'>>> somebody{'name': 'carla', 'age': 20, 'job': 'student'}
3. 字典表dict的属性
* --------- ① 获得所有键.keys()
>>> somebody.keys()dict_keys(['name', 'age', 'job', 'from'])
输出键
for k in somebody.keys():print(k)for k in somebody.keys():print(k,end=',') # 也可以以自己设置的方式输出
运行结果:
nameagejobfromname,age,job,from,
* --------- ② 获得所有值.values()
>>> somebody.values()dict_values(['carla', 20, 'student', '中国'])
for k in somebody.values():print(k*2)
运行结果:
carlacarla# str型的value默认是两遍输出40 # 数值型的value默认的是int或float的数值运算studentstudent中国中国
* --------- ③ 获得所有键值对.items()
>>> somebody.items()dict_items([('name', 'carla'), ('age', 20), ('job', 'student'), ('from', '中国')])
利用占位符输出键值对
for k,v in somebody.items():print('{}=>{}'.format(k,v))
运行结果:
name=>carlaage=>20job=>studentfrom=>中国
或者直接利用占位符输出(不用for循环),输出结果与上方👆一样:
print('''name=>{}age=>{}job=>{}from=>{}'''.format(somebody.get('name'),somebody.get('age'),somebody.get('job'),somebody.get('from')))
4. 字典表dict如何排序
* --------- ① 将.keys()放入列表
注意:
dict不支持原位改变,所以不能直接排序,我们可以借助列表list:
d={'d':4,'b':2,'c':3,'a':1}kd=d.keys()ks=list(kd)print(ks)# 直接输出ks.sort()# 对ks这个list进行排序处理print(ks)for k in ks:print(d.get(k)) # 输出键值k对应的dict的值
运行结果:
['d', 'b', 'c', 'a']['a', 'b', 'c', 'd']1234
* --------- ② 使用全局函数.sorted()
kd1=d.keys()# 注意并不是列表for k in sorted(kd1): # 调用sorted函数帮我们排序print(k,d.get(k))
输出结果:
a 1b 2c 3d 4
5. 字典表dict支持嵌套
somebody= {'name': {'first name': 'carla', 'last name': 'zhang'}, 'age': 20, 'job': 'student', 'from': '中国'}# 字典表的嵌套print(somebody['name']['last name'])
注意:
字典表有嵌套时,检索的值时所匹配的键不止是一个。
* 元组tuple
元祖不支持原位改变,它有以下几个特征:
1. 元组tuple的声明
>>> 1,2 # 默认有括号(1, 2)>>> (1,2) (1, 2)>>> (1,2)+(3,4) # 生成新的元组(1, 2, 3, 4)
* --------- 一个元素元组的声明
>>> x=30>>> type(x) <class 'int'>>>> x=30, # 加一个逗号,‘,’,来声明元组>>> type(x)<class 'tuple'>
2. 元组的输出与list转换
>>> t=(1,2,3,4)>>> t[0]# 通过下标索引查找1>>> t[0]=9 # false 不支持原位改变
tuple支持推导:
t=(1,2,3,4)for k in t:print(k**2)new=[]for k in t:new.append(k**2) # 追加到新的list中print(new)new1=[k**3 for k in t] # 换一种方式print(new1)
运行结果:
14916[1, 4, 9, 16][1, 8, 27, 64]
3. 元组的检索.index(val)与统计.count(val)
>>> t=(1,2,'carla',2,4.0)>>> t.index(4.0) # 检索4.0 在哪个位置4>>> t.count(2) # 统计2这个元素在元组中出现的频数2
>>> t=(1,2,'carla',2,4.0)>>> t1=(18,23)>>> t2=t+t1 # 元组支持累加,产生新的元组>>> t2(1, 2, 'carla', 2, 4.0, 18, 23)
4. namedtuple(‘名’,属性列表)
实际开发的时候,描述一个具体的量时很少直接用列表或者单个的量,我们总是把它归纳到一个数据结构里面去。下面👇运行一个混合体:
from collections import namedtuple # 从集合的命名空间里导入新的模块STU = namedtuple('student',['name','age','grade','address']) # 给属性定义模板列表的方式,表示关注的内容carla = STU('carla',age=20,grade='大三',address="中关村") # 不用字典表写,可以直接用这个新命名的模板写print(carla.name,carla.age),print(carla.grade)
运行结果:
carla 20大三
这里可以看成是dict,tuple和class的一个混合体。
总结
1.01365 ≈ 37.78
每天进步一点点,成长足迹看得见!👣🍀🌈