python数据类型进阶(三)散列类型——字典、集合

2.1 散列类型

  1. 数值类型:int、float、bool——》存储一个数值
  2. 序列类型:str、list、tuple——》存储多个数据
  3. 散列类型:无序、内部元素不重复

2.1.1 字典 dict

键值:类似我们生活中的字典,根据拼音找某个字,拼音就是key(键),字就是value(值)

键值对的语法:
键:值——》key:value
'name':'mao'
 
phone = {'name':'mao','number':'1235','sex':'男'}
输出方式:
字典名[]
print(phone['name'])  # mao

字典的键是不可以重复的,如果重复就会取最后一个重复键的值

dict1 = {'a':1,'b':2,'a':3,'a':4}
print(dict1)  # {'a': 4, 'b': 2} 
如果键重复则默认是取最后一个键

字典里面的数据是可变的

dict1['b'] = 100
print(dict1)  # {'a': 4, 'b': 100}
基本操作
通过key访问value
score = {'语文':89}
print(score['语文'])  # 89

通过key添加key-value对
score = {'语文':89}
score['数学'] = 93
score[92] = 5.7
print(score)  # {'语文': 89, '数学': 93, 92: 5.7}

通过key删除key-value对
del score['语文']
print(score)  # {'数学': 93, 92: 5.7}
del score['数学']
print(score)

通过key修改key-value对,如果对原有键值对赋值,那么新赋的值就会覆盖原来的值
cars = {'BMW':88,'benchi':83,'tesila':95}
cars['benchi'] = 4.3
cars['tesila'] = 3.8
print(cars)  # {'BMW': 88, 'benchi': 4.3, 'tesila': 3.8}

通过key判定key-value对是否存在
in 或者not in(基于key来判定的)
print('tesila' in cars)  # True
print('baoshijie' in cars) # False
print('BYD' in cars)  # False
print('BYD' not in cars)  # True

字典的key可以是任意的不可变类型
2.1.1.1 字典的常用方法
1.clear() 清空所有的key-value对

cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars)  # {'BMW': 88, 'benchi': 83, 'tesila': 95}
cars.clear()  
print(cars)  # {}

2.get() 根据键获取值,如果键不存在就返回None,使用中括号语法获取值,如果键不存在会报错
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars.get('BMW'))  # 88
print(cars.get('baoshijie'))  # None
print(cars['baoshijie'])  # 报错

3.update() 可以使用一个字典所包含的键值对来更新已有字典,再执行update方法时,如果被更新的字典中已包含对应的键值对,那么原来的值会被覆盖,如果被更新的字典中不包含对于的键值对,那么键值对会被添加进去
cars = {'BMW':88,'benchi':83,'tesila':95}
cars.update({'BMW':4.5,'baoshijie':9.3})
print(cars)  # {'BMW': 4.5, 'benchi': 83, 'tesila': 95, 'baoshijie': 9.3}

4.
items()——》所有的键值对,返回一个dict_items对象
cars = {'BMW':88,'benchi':83,'tesila':95}
ims = cars.items()
print(ims)  # dict_items([('BMW', 88), ('benchi', 83), ('tesila', 95)])
print(type(ims))  # <class 'dict_items'>
print(list(ims))  # [('BMW', 88), ('benchi', 83), ('tesila', 95)]
print(list(ims)[1])  # 访问第二个键值对 ('benchi', 83)

keys()——》所有的键,返回一个dict_keys对象
cars = {'BMW':88,'benchi':83,'tesila':95}
kys = cars.keys()
print(kys)  # dict_keys(['BMW', 'benchi', 'tesila'])
print(type(kys))  # <class 'dict_keys'>
print(list(kys))  # ['BMW', 'benchi', 'tesila']
print(list(kys)[1])  # 访问第二个值  benchi

values()——》所有的值,返回一个dict_values对象
可以通过list转换为列表
cars = {'BMW':88,'benchi':83,'tesila':95}
vals = cars.values()
print(vals)       # dict_values([88, 83, 95])
print(type(vals))  # <class 'dict_values'>
print(list(vals))  # [88, 83, 95]
print(list(vals)[1])  # 访问第二个值 83

5.pop() 用于获取指定的key对应的value,并且删除这个key-value对
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars.pop('tesila'))  # 95
print(cars)  # {'BMW': 88, 'benchi': 83}

6.setdefault()  用于根据键获取值,但是有额外功能,就是当程序要获取的key在字典中不存在时,这个方法会先为这个不存在的key设置一个默认的value,然后在返回key对应的value
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars.setdefault('baoshijie',92)) # 如果不存在就新增键值对
print(cars)  # {'BMW': 88, 'benchi': 83, 'tesila': 95, 'baoshijie': 92}

print(cars.setdefault('BMW',34))  # 如果存在就不会修改字典中内容
print(cars)  # {'BMW': 88, 'benchi': 83, 'tesila': 95, 'baoshijie': 92}

2.1.1.2 字典的公共功能

1.长度
info = {'age':12,'shengming':True,'name':'阿呆'}
data = len(info)
print(data)  # 3

2.索引()
info = {'age':12,'shengming':True,'name':'阿呆'}
print(info['name'])  # 阿呆
print(info['shengming'])  # True
print(info['age'])  # 12
print(info['xxxx'])  # 报错
print(info.get('xxx'))  # None

3.for循环
info = {'age':12,'shengming':True,'name':'阿呆'}
# for i in info:
#     print(i)  # 所有键
# for i in info.keys():
#     print(i)  # 所有的键
# for i in info.values():
#     print(i)   # 所有的值
for i in info.items():
    print(i)  # 所有的键值,以元组形式输出
for k,v in info.items():
    print(k,v)  # 所有的键值

2.1.2 集合 set

用来保存不重复的元素,也就是说集合中的元素都是唯一的,互不相同

语法:
集合名 = {数据1,数据2,数据3...} # 如果有重复数据是不会被添加到内存空间里面的
只能存储不可变类型


注意空类型的表现形式:
li1 = [] # 空列表
tu1 = () # 空元组
str1 = ""  # 空字符串
dict1 = {}  # 空字典
set1 = set()  # 空集合

python中集合主要用来做两件事:去重和数学关系运算
# 去重
li = [1, 2, 3, 4, 5, 6, 4, 4, 5, 6, 7, 8, 9]
li1 = set(li)
li2 = list(li1)
print(li2)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
# print(list(set(li)))  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
2.1.2.1 集合的数学运算
运算符操作python运算符含义
交集&取两集合公共的元素
并集|取两集合全部的元素
差集-取一个集合中另一集合没有的元素
成员运算in 和 not in判断一个某个元素是否在或者不在集合中
集合1 & 集合2 ——》判断交集
集合1 | 集合2 ——》判断并集
集合1 - 集合2 ——》判断差集

交集:两个集合里面共同有的数据
并集:两个集合里面的全部数据(不包括重复数据,集合本身也不能重复)
差集:集合1-集合2 减去共有的,剩下的就是差集
set1 = {1,2,3}
set2 = {3,4,5}
print(set1 & set2)  # {3}
print(set1 | set2)  # {1, 2, 3, 4, 5}
print(set1 - set2)  # {1, 2}
print(set2 - set1)  # {4, 5}
print(3 in set2)    # True
print(6 in set1)    # False

集合的作用:
1.存储非重复数据
2.用于将序列类型去重,逻辑判断(交集、并集、差集、成员运算)
2.1.2.2 增
add(要添加的对象) ——》无序

s = {'a'}
s.add('b')
print(s)
s.add('c')
print(s)
s.add('d')
print(s)
s.add('e')
print(s)
2.1.2.3 删
1.pop() 随机删除一个元素
只有集合元素是字符串类型时,并且在cmd窗口运行时才会随机删除,平时也就是在pycharm中默认保持删除第一个元素
s.pop()
print(s)
s.pop()
print(s)

2.remove(要删除的元素) 
s.remove('1')
print(s)    # 报错
s.remove('a')
print(s)  # 

3.discard() 跟remove类似,但是元素不存在也不会报错
s.discard('aaa')
print(s)  # 打印的是原来的集合

4.clear() 清空集合中所有的元素
s.clear()
print(s)  # 空集合set()

5.del 集合名  删除集合
del s
print(s)  # 上一行删除了变量s,所以在打印s的时候就会报错显示变量不存在
2.1.2.4 公共功能
- 长度 len()
- for循环

一定要记得它们是无下标,不可重复的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值