python基础之数据类型III
python基础之数据类型III
5.Dictionaries(字典)
5.1字典的认识
引子
我已经讲过的数据类型 int float str bool tuple list,我们讲的列表的数据类型有什么缺点?
列表数据类型如果存储的数据量较大,查询速度慢。
列表容器型数据类型存储的数据之间的关联性不强。
['旋哥', 22, '男', '小金', 22, '男', '唱跳rap篮球']
针对于上述的列表的两种缺点,python提供了另一种容器型数据类型,
字典dict。字典是以{}括起来,通过键值对的形式存储的容器型数据类型。他存储的数据量没有list的数据量大,但是字典的查询速度非常快,并且字典存储的数据之间的关联性较强。
字典从python3.7以后都是有序的。
字典的查询类似于二分查找:每次查询一半,从一半这个数字与目标数字对比,如果比目标数字小,则在从一半与目标数字取一半,在次查询..... 比如,100个数字,我要找到任意一个数字,二分查找算法找不超过2**n > 100 n=7次。
字典的键一定是唯一的,并且是不可变的数据类型,字典的值是任意数据类型。
# 判断以下字典哪个合法? {"name": "barry", 1: 333} {1.4: 666, [1,2]: 777} {(22, 33): 555, 'age': 18} {([11,22]): 34, 1: 1}# {'旋哥': {'name': '旋哥', 'age': 22, 'hobby': '跑步'},'name_list': ['小金', '明天', '阿珍'] }
5.2字典的操作
5.2.1字典的创建
# 方式一 简单创建 dic1 = {'name': 'Allen', 'age': 25, 'hobby': ['girl', '球类运动', '台球']}# 方式二 dic2 = dict((('one', 1), ('two', 2), ('three', 3))) print(dic2)# 方式三 dic3 = dict(name='Allen', age=25, sex='男') print(dic3)
字典的键是唯一的,我们所有的通过字典的操作都是通过键去操作键值对,我们可以把字典的键当做列表的索引。方便你理解。
5.2.2字典的增、改
dic1 = {'name': 'Allen', 'age': 25}# 方式一 有责改之,无责增加 # dic1['sex'] = '男' # dic1['name'] = '明哥' # print(dic1)# 方式二 有责改之,无责增加 # dic1.update(sex='男', hobby='girl') # dic1.update({'hobby': ['girl', '球类运动']}) # dic1.update({'name': '天哥', 'hobby': 'run'}) # print(dic1)# 方式三 有则不变,无责增加 # dic1.setdefault('sex', '男') dic1.setdefault('name', '豪哥') print(dic1)
5.2.3字典的删
dic1 = {'name': 'Allen', 'age': 25}# 方式一:pop 按照键去删除键值对,返回对应的值 # ret = dic1.pop('name') # print(ret)# 方式二 del # del dic1['name'] # del dic1# 方式三:clear dic1.clear() print(dic1)
5.2.4字典的查
dic1 = {'name': 'Allen', 'age': 25} dic1 = {'name': 'Allen', 'age': 25}# 方式一 直接查询(不推荐)# ret = dic1['name'] # ret = dic1['name1']# 方式二: get (推荐) # ret = dic1.get('name') # ret = dic1.get('name1') # 还可以设置返回值 # ret = dic1.get('name1', '没有此键')# 方式三 :setdefault 有奇用 # ret = dic1.setdefault('name') ret = dic1.setdefault('name1') print(ret)
特殊查询
dic1 = {'name': 'Allen', 'age': 25, 'card': '6217 0001 9000 2473 653'} # for循环遍历 直接循环,循环字典的键 # for i in dic1: # print(i)# 获取字典所有的键 类似于列表,可以转化成列表,也可以直接循环。 # keys = dic1.keys() # dict_keys(['name', 'age', 'card']) # # print(list(keys)) # # print(keys) # for i in keys: # print(i)# 获取字典所有的值 类似于列表,可以转化成列表,也可以直接循环。 # values = dic1.values() # print(list(values)) # print(values) # for val in values: # print(val) # # 获取字典所有的键值对 类似于列表,可以转化成列表,也可以直接循环。 # items = dic1.items() # # print(list(items)) # # print(items) # for i in items: # print(i)
5.3解构
也叫做分别赋值
# a = 10 # 变量与值一一对应 # a, b = 10, 20 # print(a,b)# a, b, c = ('Allen', '旋哥', 666) # a, b, c = ['Allen', '旋哥', 666] # print(a, b, c)# a, b = (1, 2, 3) # print(a, b)# 面试题 有变量a = 10, 变量b = 30 用最简单的方法让a,b两个变量的值互换。 a = 10 b = 30 a, b = b, a # a, b = 30, 10 print(a, b)# 延展dic1 = {'name': 'Allen', 'age': 25, 'card': '6217 0001 9000 2473 653'} # for item in dic1.items(): """第一次循环:item = ('name', 'Allen')第二次循环:item = ('age', 25)..... """# print(item)# for key, val in dic1.items():"""第一次循环:key, val = ('name', 'Allen')第二次循环:key, val = ('age', 25)....."""# print(key, val)
5.4字典的嵌套
dic = {'name': '阿峰','age': 48,'wife': [{'name': '国际小章', 'age': 38}],'children': {'girl_first': '苹果', 'girl_second': '小怡怡', 'girl_three': '小顶顶'} }# 1. 获取阿峰的名字。 # print(dic.get('name')) # # 2.获取这个字典:{'name':'国际小章','age':38}。 # lst = dic.get('wife') # print(lst[0]) # 3. 获取阿峰妻子的名字。 # ret = dic.get('wife')[0].get('name') # print(ret) # # 4. 将阿峰的第三个孩子名字改成 xx. # print(dic.get('children')['girl_three']) dic.get('children')['girl_three'] = 'xx' print(dic)
6.Sets(集合)
6.1集合的介绍
集合,set,python的基础数据类型,它是以{}括起来,通过逗号隔开的容器型数据类型。集合是无序的,集合要求它里面的数据是不可变的数据类型,并且不能重复,但是集合本身是可变的数据类型。
集合的优点:
列表去重。
关系测试。(测试两个集合的交集,并集,差集,反交集等)
测试集合的合法性:
# set1 = {10, True, 'Allen', (1, 2, 3)} # print(set1) # # set1 = {10, [1, 2, 3], 'Allen', (1, 2, 3)} # 错误 # set1 = {10, {'name': '小金'}, 'Allen', (1, 2, 3)} # 错误 # print(set1)# 空集合如何显示? # print({}, type({})) set1 = set() print(set1, type(set1))
列表的去重
l1 = [1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 6] # 将l1列表进行去重。 # list ---> set set1 = set(l1) print(set1) # set ---> list print(list(set1)) # 将l1列表进行去重(不让使用集合)。 自己想。
6.2集合的常用操作
6.2.1增
set1 = {'Allen', '珍哥', '树哥', '姚哥'} # add # set1.add('硕哥') # print(set1)# 迭代着增加 update # set1.update('abc') set1.update([1, 2, 3]) print(set1)
6.2.2删
# pop 随机删除有返回值 # ret = set1.pop() # print(ret) # print(set1)# remove 按照元素删除 # set1.remove('聪哥') # print(set1)# clear清空 # set1.clear() # print(set1)
6.2.3改
# 先删除后增加 # set1.remove('Allen') # set1.add('男神') # print(set1)
6.2.4查
for i in set1:print(i)
6.3集合的关系测试
交集、反交集、并集、差集、子集、超集
set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8}# 交集 print(set1 & set2) print(set1.intersection(set2))# 反交集 print(set1 ^ set2) print(set1.symmetric_difference(set2))# 并集 print(set1 | set2) print(set1.union(set2))# 差集 print(set1 - set2) # set1独有的 print(set1.difference(set2)) print(set2 - set1 ) # set2 独有的# 子集 set1 = {1, 2, 3, 4, 5} set2 = {3, 4, 5} print(set1 > set2) # set1 是set2 超集 print(set1.issuperset(set2)) # set1 是set2 超集print(set2 < set1) # set2 是set1的子集 print(set2.issubset(set1)) # set2 是set1的子集
冻集合
集合本身是可变的数据类型,我们可以将集合变成不可变的数据类型,将集合冻起来。
set2 = {3, 4, 5} set3 = frozenset(set2) # print(set3) print(set(set3)) # dic = {set3: 666} # print(dic)
python基础之数据类型III相关推荐
- Python基础之数据类型(一)
Python基础之数据类型(一) 一.数据类型种类 二.int类型 三.float类型 1.float介绍 2.float简单示例 三.bool类型 1.布尔值为true 2.布尔值为false 四. ...
- Python基础之数据类型II
Python基础之数据类型II 3.List(列表) 引子 我们现在已经学过的基础数据类型: int float str bool,str类型可以帮我们存储少量的数据,但是str有什么缺点? str存 ...
- 1. Python基础之数据类型与注释
文章目录 Python基础之数据类型与注释 1.变量 2.数据类型 2.1 Number类型 Int 整型 Float 浮点型 2.2 Bool 布尔类型 2.3 String 字符串类型 2.4 L ...
- 【python基础】——数据类型(列表、字典、集合)
骏马金龙--python语法基础 python基础 变量与运算 符号 // % ** 意义 整除 整除取余 幂次方 数据种类 #mermaid-svg-7nSRRijcYFCYwTDr .label{ ...
- python 基础(数据类型、运算符、流程控制、推导式、函数等...更新中)
python基础 一.认识Python 1.python起源 Python 的创始人为吉多·范罗苏姆(Guido van Rossum),江湖人称"龟叔". 1991年,第一个Py ...
- python基础之数据类型与变量
阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...
- python定义变量类型_一、python基础之数据类型与变量
一.变量 声明变量 #!/usr/bin/env python age=9 name='ld' name1='ld1' 变量作用:保存状态(程序的运行本质是一系列状态的变化,变量的目的就是用来保存状态 ...
- python定义一个整数变量a_第二篇.1、python基础之数据类型与变量
一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:"变"=>变 ...
- python基础之数据类型
一.数据类型 python中的数据类型 python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是在初始化生成一个对象,即所有数据都是对象. 对象三个特性: 身份:内 ...
最新文章
- array column函数php,php array_column 函数实例应用
- java中配置bean_Spring中基于Java的配置@Configuration和@Bean用法
- Ulua_toLua_基本案例(八)_LuaAccessingArray
- 云计算底层技术-虚拟网络设备(Bridge,VLAN)
- Redis 6.0 的客户端缓存是怎么肥事?一文带你了解!
- OpenCV属性页配置问题~
- C# log4net纯代码设置参数
- 8.Docker技术入门与实战 --- 使用Dockerfile创建镜像
- BUAA(2021春) 北京地铁乘坐线路查询——Dijkstra和Floyd双解法
- android dm 分区异常,硬盘分区时损坏,无法使用PQ和DM,如何修复
- 冰封王座人工只能_魔兽争霸3玩家热议 人工智能能否轻松战war3胜职业选手?
- 微信小程序自定义tabbar以及闪烁问题
- 分布式电商项目五:使用人人开源搭建前后分离的后台管理系统
- 【netron】模型可视化工具netron
- 联想最小的计算机,联想开卖全球首款5G笔记本电脑,搭载业界最小5G模块
- 栈结构之链栈详解(C语言版)
- 高防CDN服务的应用场景之门户网站
- win8系统设置杜比音效的详细步骤--win7w.com
- 10款响应式自适应网站模板(二)
- 高中综合素质文化素养