python数据类型,集合set、字典dict、浮点型float之间转换和其独有的方法和公共方法(超详细)

目录

Day07:数据类型(下)

7.1 集合(set)无序 、可变、不允许数据重复的容器

7.1.1 独有功能

7.1.1.1 add 添加元素

7.1.1.2 discard 删除元素

7.1.1.3 intersection 交集

7.1.1.4 union 并集

7.1.1.5 difference 差集

7.1.2 公共功能

7.1.2.1 减,计算差集

7.1.2.2 &,计算交集

7.1.2.3 |,计算并集

7.1.2.4 len 长度

7.1.2.5 for循环

7.1.3 转换

7.1.4 其他(补充扩展)

7.2 字典(dict) 可变、无序、键不重复 且 元素只能是 键值对 的容器

7.2.1 独有功能

7.2.1.1 get 获取值

7.2.1.2 keys 所有的键

7.2.1.3 values 所有的值

7.2.1.4 items 所有的键值

7.2.1.5 setdefault 设置值

7.2.1.6 update 更新字典键值对

7.2.1.7 pop 移除指定键值对

7.2.1.8 popitem 按照顺序移除(后进先出)

7.2.2 公共功能

7.2.2.1 | 求并集(Python3.9新加入)

7.2.2.2 len 长度

7.2.2.3 in 是否包含

7.2.2.4 get 索引(键)

7.2.2.5 键 修改值 和 添加值 和 删除键值对

7.2.2.6 for循环

7.2.3 转换

7.2.4 注意事项

7.3 浮点型 (float)用于表示小数


Day07:数据类型(下)

7.1 集合(set)无序 、可变、不允许数据重复的容器

  • 无序,无法通过索引取值。

  • 可变,可以添加和删除元素。

  • 不允许数据重复。

    v1 = {11,22,33,44}
    v1.add(22)
    print(v1) # {11,22,33,44}
  • 创建空集合方法

    data = set()
    ​
    print(type(data))  #<class 'set'> 集合类型

    一般什么时候用集合呢?

就是想要维护一大堆不重复的数据时,就可以用它。比如:做爬虫去网上找图片的链接,为了避免链接重复,可以选择用集合去存储链接地址。

7.1.1 独有功能

7.1.1.1 add 添加元素
data = {"刘嘉玲", '关之琳', "王祖贤"}
data.add("郑裕玲")
print(data)
7.1.1.2 discard 删除元素
data = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
data.discard("关之琳") 
print(data)
7.1.1.3 intersection 交集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
​
s4 = s1.intersection(s2) # 取两个集合的交集 
print(s4) # {"⽪⻓⼭"}
7.1.1.4 union 并集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s4 = s1.union(s2)       # 取两个集合的并集  {"刘能", "赵四", "⽪⻓⼭","刘科⻓", "冯乡⻓", }
print(s4)
s3 = s1 | s2            # 取两个集合的并集
print(s3)
7.1.1.5 difference 差集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s4 = s1.difference(s2)      # 差集,s1中有且s2中没有的值 {"刘能", "赵四"}
s6 = s2.difference(s1)      # 差集,s2中有且s1中没有的值 {"刘科⻓", "冯乡⻓"}
​
s3 = s1 - s2               # 差集,s1中有且s2中没有的值
s5 = s2 - s1               # 差集,s2中有且s1中没有的值
​
print(s5,s6)

7.1.2 公共功能

7.1.2.1 减,计算差集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
​
s3 = s1 - s2 
s4 = s2 - s1
print(s3)
print(s4)
7.1.2.2 &,计算交集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s3 = s1 & s2
print(s3)
7.1.2.3 |,计算并集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s3 = s1 | s2
print(s3)
7.1.2.4 len 长度
v = {"刘能", "赵四", "尼古拉斯"}
data = len(v)
print(data)
7.1.2.5 for循环
v = {"刘能", "赵四", "尼古拉斯"}
for item in v:
    print(item)

7.1.3 转换

转换为集合类型,可以通过set进行转换,并且如果数据有重复自动剔除。

提示:int/list/tuple/dict都可以转换为集合。

data = {11,22,33,3,99}
​
v1 = list(data) # [11,22,33,3,99]
​
v2 = tuple(data) # (11,22,33,3,99)
​
提示:这其实也是去重的一个手段。

7.1.4 其他(补充扩展)

因存储原理,集合的元素必须是可哈希的值,即:内部通过通过哈希函数把值转换成一个数字。

注意:由于True和False本质上存储的是 1 和 0 ,而集合又不允许重复,所以在整数 0、1和False、True出现在集合中会有如下现象:

v1 = {True, 1}
print(v1)  # {True}
​
v2 = {1, True}
print(v2)  # {1}
​
v3 = {0, False}
print(v3)  # {0}
​
v4 = {False, 0}
print(v4)  # {False}

7.2 字典(dict) 可变、无序、键不重复 且 元素只能是 键值对 的容器

  • 容器

  • 元素必须键值对

  • 键不重复,重复则会被覆盖

    data = { "k1":1, "k1":2 }
    print(data) # {"k1":2}
  • 无序(在Python3.6+字典就是有序了,之前的字典都是无序。)

字典中对键值得要求:

  • 键:必须可哈希。 目前为止学到的可哈希的类型:int/bool/str/tuple;不可哈希的类型:list/set/dict。(集合)

  • 值:任意类型。

一般在什么情况下会用到字典呢?

当我们想要表示一组固定信息时,用字典可以更加的直观,例如:

# 用户列表
user_list = [ {"name":"大烧饼","pwd":"123"}, {"name":"小烧饼","pwd":"123"} ]

7.2.1 独有功能

7.2.1.1 get 获取值
info = { 
    "age":12, 
    "status":True, 
    "name":"大烧饼",
    "data":None
}
​
data1 = info.get("name")
print(data1) # 输出:大烧饼
7.2.1.2 keys 所有的键
info = {"age":12, "status":True, "name":"dashaobing","email":"xx@live.com"}
data = info.keys()
print(data) # 输出:dict_keys(['age', 'status', 'name', 'email'])    py2 -> ['age', 'status', 'name', 'email']
​
注意:在Python2中 字典.keys()直接获取到的是列表,而Python3中返回的是`高仿列表`,这个高仿的列表可以被循环显示。
7.2.1.3 values 所有的值
info = {"age":12, "status":True, "name":"dashaobing","email":"xx@live.com"}
data = info.values()
​
print(data) # 输出:dict_values([12, True, 'wupeiqi', 'xx@live.com'])
​
注意:在Python2中 字典.values()直接获取到的是列表,而Python3中返回的是高仿列表,这个高仿的列表可以被循环显示。
7.2.1.4 items 所有的键值
info = {"age":12, "status":True, "name":"dashaobing","email":"xx@live.com"}
data = info.items()
​
print(data) # 输出 dict_items([ ('age', 12),  ('status', True),  ('name', 'dashaobing'),  ('email', 'xx@live.com')  ])
7.2.1.5 setdefault 设置值
data = {
    "name": "大烧饼",
    "email": 'xxx@live.com'
}
data.setdefault("age", 18)
print(data)  # {'name': '大烧饼', 'email': 'xxx@live.com', 'age': 18}
​
注意:如已有则不会设置
7.2.1.6 update 更新字典键值对
info = {"age":12, "status":True}
info.update( {"age":14,"name":"大烧饼"} )   # info中没有的键直接添加;有的键则更新值
print(info) # 输出:{"age":14, "status":True,"name":"大烧饼"}
7.2.1.7 pop 移除指定键值对
info = {"age":12, "status":True,"name":"大烧饼"}
​
data = info.pop("age")
​
print(info) # {"status":True,"name":"大烧饼"}
print(data) # 12
7.2.1.8 popitem 按照顺序移除(后进先出)
info = {"age":12, "status":True,"name":"大烧饼"}
data = info.popitem() # ("name","大烧饼" )
​
print(info) # {"age":12, "status":True}
print(data) # ("name","大烧饼")
​
- py3.6后,popitem移除最后的值。
- py3.6之前,popitem随机删除。

7.2.2 公共功能

7.2.2.1 | 求并集(Python3.9新加入)
v1 = {"k1": 1, "k2": 2}
v2 = {"k2": 22, "k3": 33}
​
v3 = v1 | v2
print(v3) # {'k1': 1, 'k2': 22, 'k3': 33}
7.2.2.2 len 长度
info = {"age":12, "status":True,"name":"大烧饼"}
data = len(info)
print(data) # 输出:3
7.2.2.3 in 是否包含
info = { "age":12,  "status":True,"name":"武沛齐" }
v1 = "age" in info
print(v1)
7.2.2.4 get 索引(键)
info = { "age":12,  "status":True, "name":"大烧饼"}
​
print( info["age"] )        # 输出:12
print( info["name"] )       # 输出:大烧饼
print( info["status"] )     # 输出:True
print( info["xxxx"] )       # 报错,通过键为索引去获取之后时,键不存在会报错(以后项目开发时建议使用get方法根据键去获取值)
​
value = info.get("xxxxx") # None
print(value)
7.2.2.5 键 修改值 和 添加值 和 删除键值对
# 修改值
info = {"age":12, "status":True,"name":"大烧饼"}
​
info["gender"] = "男"
​
print(info) # 输出: {"age":12, "status":True,"name":"大烧饼","gender":"男"}
​
# 添加值
info = {"age":12, "status":True,"name":"大烧饼"}
​
info["age"] = "18" 
​
print(info) # 输出: {"age":"18", "status":True,"name":"大烧饼"}
​
# 删除键值对
info = {"age":12, "status":True,"name":"大烧饼"}
del info["age"]  # 删除info字典中键为age的那个键值对(键不存在则报错)
​
print(info) # 输出: {"status":True,"name":"大烧饼"}
​
info = {"age": 12, "status": True, "name": "大烧饼"}
if "agea" in info:
​
    # del info["age"]
    data = info.pop("age")
    print(info)
    print(data)
else:
    print("键不存在")
7.2.2.6 for循环

由于字典也属于是容器,内部可以包含多个键值对,可以通过循环对其中的:键、值、键值进行循环;

# 所有键(默认就是循环键)
info = {"age":12, "status":True,"name":"大烧饼"}
for item in info:
    print(item)  # 所有键
​
# 所有键
info = {"age":12, "status":True,"name":"大烧饼"}
for item in info.keys():
    print(item)
 
# 所有值
info = {"age":12, "status":True,"name":"大烧饼"}
for item in info.values():
    print(item)
    
# 所有键值对
info = {"age":12, "status":True,"name":"大烧饼"}
for key,value in info.items():
    print(key,value)

7.2.3 转换

转换为字典

v = dict( [ ("k1", "v1"), ["k2", "v2"] ] )
​
print(v) # { "k1":"v1", "k2":"v2" }

7.2.4 注意事项

  • 字典的键必须可哈希(list/set/dict不可哈希)。

info = {
    (11,22):123
}
​
# 错误
info = {
    (11,[11,22,],22):"alex"
}
  • 字典的值可以是任意类型。

info = {
    "k1":{12,3,5},
    "k2":{"xx":"x1"}
}
  • 字典的键和集合的元素在遇到 布尔值 和 1、0 时,需注意重复的情况。

7.3 浮点型 (float)用于表示小数

v1 = 3.14

关于浮点型的其他知识点如下:

  • 在类型转换时需要,在浮点型转换为整型时,会将小数部分去掉。

    v1 = 3.14 
    data = int(v1)
    print(data) # 3
  • 想要保留小数点后N位

    v1 = 3.1415926
    result = round(v1,3)
    print(result) # 3.142

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值