栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

python(七)散列类型与格式化输出

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python(七)散列类型与格式化输出

目录

1.1 散列类型(哈希类型)

1.2 集合 set

1.2.1 概念

1.2.2 性质 

 1.2.3 运算

 1.2.4 方法

1.3 字典 dict

1.3.1 概念

 1.3.2 性质

1.3.3 方法

2.1 格式化输出

2.1.1 %方法(占位符)

2.1.2 format()方法

2.1.3 f-format()

 3.1 小练习

4.1 解析


1.1 散列类型(哈希类型)
数值类型:
	int,float,bool   -> 存储一个数值
序列类型:
	str,list,tuple   -> 存储多个数据
散列类型:
	1.无序   【散列类型没有下标】
	2.内部元素不重复

1.2 集合 set

1.2.1 概念

集合(set) -> 负责存储【不重复的数据】,并且是【无序存储】的容器,主要用来去重和逻辑比较

1.2.2 性质 

唯一性:元素唯一存在,不能重复

可变性:同列表一样。集合可以通过它的一些方法进行修改操作

无序性:无下标,无顺序

set1 = {1, 2, 3, 4, 1, 2, 6, 5, 7, 7, 7, 9, 8, 2, 8}
print(set1)  # 正常输出一个集合,里面的数据默认去重
# print(set1[0]) # 散列类型无序,不可以通过下标提取元素,报错
print(type(set1))

语法:
    集合名 = {数据1,数据2,数据3.....} # 如果有重复的,是不会被添加到内存空间里面
    
ps:创建空集合的时候必须使用set() 而不能直接{} ,{}默认是空字典
li1 = [] # 空列表
tu1 = () # 空元组
str1 = "" # 空字符串
dict1 = {} # 空字典
set1 = set() # 空集合

集合的基本操作 --》去重
li = [1, 2, 3, 4, 5, 6, 6, 6, 6, 7, 8, 9, 9, 9]
# 快速写法
li =  list(set(li))

 1.2.3 运算
运算操作Python运算符含义
交集&取两集合公共的元素
并集|取两集合全部的元素
差集-取一个集合中另一集合没有的元素
成员运算in 和 not in判断一个某个元素是否在或者不在集合中
集合1 & 集合2 --> 判断交集  (shift+7)
集合1 | 集合2 --> 判断并集   (shift + )
集合1 - 集合2 --> 判断差集

交集:两个集合里面共同拥有的数据
并集:两个集合里面的全部数据(不包括重复数据)
差集:差集1 - 差集2 减去共有部分,剩下的就是差集【去掉交集之后就是差集】

# & 交集  取两个集合的公共元素
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 & set2)  # 获取公共部分

# | 并集,取两个集合的全部元素,结果会去重
print(set1 | set2)

# - 差集 
print(set1 - set2)

- 小练习
碗A {炸鸡,青菜,小龙虾}
碗B {臭豆腐,青菜,螃蟹}
交集:两个碗里面都有的菜,就是交集  =》 青菜
并集:两个碗里面的菜种类加在一起,就是并集 =》炸鸡,青菜,小龙虾,臭豆腐,螃蟹
差集:将和另一个碗共有的菜减掉
	碗A - 碗B ==>  炸鸡,小龙虾
    碗B - 碗A ==>  臭豆腐,螃蟹
    
注意:集合不能放列表

集合的作用:
	1.存储非重复数据
    2.用于将序列类型去重,逻辑判断(交并差)

 1.2.4 方法

集合的方法都是作用效果于原集合

增

- add() : 参数为要添加的对象,通过多次添加数据可以发现添加后的元素位置不确定
    
- update() : 参数为序列类型,会将每一个元素拆分后随机添加集合中
    

s = {"华为"}
s.add('小米') # add 是往前面添加
print(s)
s.add("苹果")
print(s)
s.update("123")
print(s)

 删

```python
pop():随机删除一个元素  # pycharm中默认从左开始删
    # 实际上在进行代码实验的时候并不是随机的,默认从左开始删
    # 仅在集合元素是字符串类时候,并且cmd运行才会随机删除

remove(内容):有参数,参数为要删除的元素,如果元素不存在则报错
discard(内容):同remove,元素不存在也不报错

clear() : 清空集合中元素

s = {"华为","小米",'苹果'}
s.add('三星') # add 是往前面添加
print(s)
s.add("oppo")
print(s)
s.discard('华为')
print(s)
s.clear()
print(s)
```

1.3 字典 dict

1.3.1 概念

字典(dict)用来存储一些有典型的 “对应关系” 的数据类型,特点就是用键值对的方式来存储数据

name = ["小明",'大锤','汤姆','杰克']
tel = ["10086",'10010','10000','12315']
# 为了方便查阅,python就提供了一个存储方式:字典
字典就是以键值对来存储的

什么是键值对?
小明就是键,对应一个值就是 "10086"

键值对语法: key:value    ex    "小明":"10086"(一个元素,键值对)
        
字典的表现形式:字典和集合一样用大括号,如果大括号里面如果存储的是普通的值,就是集合,如果是键值对(说明关系的数据),那么它就是字典

字典跟普通容器不同,更适合去描述一个对象

语法格式:
	字典名 = {键名1:值,键名2:值,键名3:值.。。。}
    
nr = {
    '姓名': '小明',
    '年龄': 18,
    '工作': '写Python'
}
输出方式:
	字典名[键]
    print(nr['工作'])
	print(call['大锤'])

 1.3.2 性质

字典在内存中主要是通过键来访问

1. 无序 没有下标,字典可以通过键来访问数据
	字典名[键]
2. 不重复,字典的键,是不可以重复的
	nr = {
        '姓名': '小明',
        '年龄': 18,
        '工作': '写Python',
        '年龄': 28
	} # 重复了,默认取最后一个
3. 可变性,字典里面的数据是可变的,能嵌套
	nr['年龄'] = 28
    
    nr = {
    '姓名': '小明',
    '年龄': 18,
    '工作': '写Python',
    '技能': ['python', 'java', 'c', 'scala', '珠峰']
}

1.3.3 方法

增 

- 增
	- setdefault:给字典添加一个元素,如果原先有这个元素,就输出它的值
    - 字典名.setdefault("键名") -->能增加一个键,值默认为空
    - 字典名.setdefault("键名","值")
    nr.setdefault("出生日期","1900-08-08")
    print(nr)

一般增加不是用方法,而是直接写
zd = {"a": 1, "b": 2}
zd['c'] = 3  # 直接这样也能增加
print(zd)

删 

--删
```python
pop() : 删除指定的键

字典名.pop(键名)
zd.pop("c")  # 字典
print(zd)
zd.pop("a")
print(zd)

clear() : 清空字典
```

改

```python
update: 修改键的值,如果没有这个键,就新增加一个
    字典名.update({键,值})
zd.update({"d":10})
print(zd)

常用的:直接赋值
zd['a'] = 5
print(zd)
```

 查

```python
- get(键名,默认值) : 通过键名,获得键值
    print(zd.get('c','^_^')) # 区别,找不到不会报错,会填充默认值
- keys:  获得所有的键
- values   获得所有的值
zd = {"a": 1, "b": 2}
zd['c'] = 3  # 直接这样也能增加
print(list(zd.keys()))
print(list(zd.values()))

- items: 获取所有的键值对,将键值对全部装成元组
```

2.1 格式化输出

格式化输出让可以更舒服的输出带有变量的字符串

2.1.1 %方法(占位符)

先预定,占住一个位置,后续再用实际的数据填不上

程序在开发的时候,有时候不确定使用的数据具体是啥,先占个位置

占位符也能分为不同的类型

  • 常用的占位符

%s = 字符串

%d = 整数

%f =  小数 =》 默认保留6位小数点 

​	%.1f => 保留一位小数点

​    %.2f => 保留二位小数点

语法

"xxx%dxxxx%s"%(变量1,变量2)

nr = {
    'name': "小明",
    'age': 18,
    'height': 1.77,
}

print("你好,我叫%s,今年%d岁了,身高%.3f" % (nr['name'], nr['age'], nr['height']))

2.1.2 format()方法

字符串的一个方法

语法

print("你好,我叫{},今年{}岁了,身高{}".format(nr['name'],nr['age'],nr['height']))

2.1.3 f-format()

python3.x 新提供的格式化输出方式,寓意快速

更简单,更常用

语法:在字符串前面加上 f/F,把要输出的变量用大括号{}进行包囊

name = "小明"
age= 18
height =  1.7

print(f"大家好,我叫{name}我今年{age}岁,今年身高是{height}")
# 大括号内的变量可以进行操作 : 方法,切片,增加减少
print(f"大家好,我叫{name[0]}我今年{age+1}岁,今年身高是{height*2}")

 3.1 小练习
# 1.将列表数据[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]去重

# 2.用字典建立一个个人名片,要求要一个爱好:[]

# 3.有字典 dic = {"k1": "v1", "k2": "v2", "k3": "v3"},实现以下功能:
	(1)、遍历字典 dic 中所有的key
    (2)、遍历字典 dic 中所有的value
    (3)、循环遍历字典 dic 中所有的key和value
    (4)、添加一个键值对"k4","v4",输出添加后的字典 dic
    (5)、删除字典 dic 中的键值对"k1","v1",并输出删除后的字典 dic
    (6)、获取字典 dic 中“k2”对应的值
# 4.students = [
    {'name':'小明','age':18,'score':98,'tel':'18888888888','gender':'female'},
    {'name':'大明','age':20,'score':95,'tel':'18888888889','gender':'unkown'},
    {'name':'汤姆','age':18,'score':88,'tel':'18888888810','gender':'male'},
    {'name':'杰克','age':16,'score':58,'tel':'18888888811','gender':'unkown'},
    {'name':'山姆','age':19,'score':78,'tel':'18888888812','gender':'male'},
    {'name':'麦克','age':17,'score':92,'tel':'18888888813','gender':'male'},
]
# 1.统计及格学生的个数
# 2.将女性改为男性

4.1 解析
# 1.将列表数据[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]去重
 set1=[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]
 set2=set(set1)
 print(list(set2))

# 2.用字典建立一个个人名片,要求要一个爱好:[]
 gr={
     '姓名:' :'me',
     '年龄:' : 26,
     '兴趣爱好:':['打篮球','学python','打游戏','永劫无间']
 }
 print(gr)

# 3.有字典 dic = {"k1": "v1", "k2": "v2", "k3": "v3"},实现以下功能:
# 	(1)、遍历字典 dic 中所有的key
dic={"k1": "v1", "k2": "v2", "k3": "v3"}
 for i in dic:
     print(i)
#     (2)、遍历字典 dic 中所有的value
 for i in dic.values():
     print(i)
#     (3)、循环遍历字典 dic 中所有的key和value
 for i in dic.keys():
     print(i,dic[i])
#     (4)、添加一个键值对"k4","v4",输出添加后的字典 dic
'第一种方法: '
 dic_1=dic.setdefault("k4","v4")
 print(dic)
'第二种方法: '
 dic["k4"]='v4'
 print(dic)
#     (5)、删除字典 dic 中的键值对"k1","v1",并输出删除后的字典 dic
 dic.pop("k1")
 print(dic)
#     (6)、获取字典 dic 中“k2”对应的值
 print(dic["k2"])



students = [
    {'name':'小明','age':18,'score':98,'tel':'18888888888','gender':'female'},
    {'name':'大名','age':20,'score':95,'tel':'18888888889','gender':'unkown'},
    {'name':'汤姆','age':18,'score':88,'tel':'18888888810','gender':'male'},
    {'name':'杰克','age':16,'score':58,'tel':'18888888811','gender':'unkown'},
    {'name':'山姆','age':19,'score':78,'tel':'18888888812','gender':'male'},
    {'name':'麦克','age':17,'score':92,'tel':'18888888813','gender':'male'},
]
# 1.统计及格学生的个数
 j=0
 for i in students:
     if(i['score']>=60):
         j+=1
 print(j)
# 2.将女性改为男性
for i in students:
    if(i['gender']=='female'):
        i.update({'gender':'male'})
    print(i)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014711.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号