10-python字典的常用方法与集合

1 字典的常用方法

clear()用于清空字典中所有的键值对
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars)  # {'BMW': 88, 'benchi': 83, 'tesila': 95}
# 清空cars里面所有的键值对
cars.clear()
print(cars)  # {}

get()其实就是根据key获取value的,它相当于是方括号语法的增强版,如果使用方括号语法访问并不存在的key的时候,程序会报错;但是如果使用get()方法访问不存在的key的时候,这个方法会返回一个None,不会导致程序报错
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars.get('BMW'))  #  88
print(cars.get('baoshijie'))  #  None
print(cars['baoshijie'])  # 会报错

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}

items()、keys()、values()分别用于获取字典中的所有的键值对、所有的key、所有的value
这三个方法依次会返回dict_items、dict_keys和dict_values的对象
python不希望用户直接操作这几个方法,但是可以通过list()函数把他们转换成列表
#获取字典所有的键值对
cars = {'BMW':88,'benchi':83,'tesila':95}
ims = cars.items()
print(type(ims))  #  <class 'dict_items'>
print(list(ims))  # [('BMW', 88), ('benchi', 83), ('tesila', 95)]
print(list(ims)[1])  # ('benchi', 83)

# 获取字典中所有的key
cars = {'BMW':88,'benchi':83,'tesila':95}
kys = cars.keys()
print(type(kys))  # <class 'dict_keys'>
print(list(kys))  # ['BMW', 'benchi', 'tesila']
print(list(kys)[2])  # tesila

# 获取字典中所有的value
cars = {'BMW':88,'benchi':83,'tesila':95}
vals = cars.values()
print(type(vals))  # <class 'dict_values'>
print(list(vals))  # [88, 83, 95]
print(list(vals)[0])  # 88

以上三剑客需要调用list()函数将它们转换为列表,这样就可以把这三个方法的返回值转换为列表了


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

setdefault() 用于根据key来获取对应的value
当程序要获取的键在字典中不存在的时候,这个方法会先为这个不存在的key设置一个默认的value,然后再返回这个key对应的value
cars = {'BMW':88,'benchi':83,'tesila':95}
print(cars.setdefault('baoshijie',92))# 如果不存在就直接添加92
print(cars)  # {'BMW': 88, 'benchi': 83, 'tesila': 95, 'baoshijie': 92}
print(cars.setdefault('BMW',34))  # 如果存在不会改变88
print(cars)  # {'BMW': 88, 'benchi': 83, 'tesila': 95, 'baoshijie': 92}

2 字典的公共功能

  1. 长度

    info = {'age':12,'shengming':True,'name':'阿呆'}
    data = len(info)
    print(data)  # 3  3个键值
    
  2. 索引(键)

    info = {'age':12,'shengming':True,'name':'阿呆'}
    print(info['age'])  # 12
    print(info['name'])  # 阿呆
    print(info['shengming'])  # True
    # print(info['xxx'])  # 报错
    # 在以后的程序开发中最好是用get
    value = info.get("xxxx")
    print(value)  # None
    
  3. for循环

    info = {'age':12,'shengming':True,'name':'阿呆'}
    # 直接遍历这个字典,可以获取所有的键
    for item in info:
        print(item)  # 获取所有键
    
    for key in info.keys():
        print(key)  # 获取所有键
    
    for value in info.values():
        print(value)  # 获取所有的值
    
    for k,v in info.items():
        print(k,v)  # 获取所有的键值
    

3 集合 set

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

{name1,name2......namen}
只能存储不可变的数据类型

无法存储列表,字典,集合

数据要保证是唯一的,因为集合中对于每种数据元素,只会保留一份
s = {1,2,1,(1,2,3),'c','c'}
print(s)  # {1, 2, 'c', (1, 2, 3)}

集合是无序的,所以每次输出时元素的顺序可能都不相同
散列类型无序,不可以通过下标提取元素,报错
s = {1,2,3,4,1,2,5,96,8,4,1,63,96,4,1}
print(s[1])  # 报错
语法: 集合名 = {数据1,数据2,数据3....}
如果有重复数据,是不会被添加到内存空间里面的
注意:创建空集合的时候必须使用set()而不能是{},因为这个{}默认是空字典
li = []  #空列表
tu1 = ()  # 空元祖
str1 = ""  #空字符串
dict1 = {}  #空字典
set1 = set()  #空集合

python中集合主要用来干2件事,去重和数学关系运算
# 	去重
li = [1,1,1,2,3,4,56,74,89,4,165,132,123,1]
print(list(set(li)))

3.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} 可以理解为set1+set2,但是结果会去重
print(set1 - set2)  # {1, 2}
print(set2 - set1) # {4, 5}
print(3 in set2)  # True 
集合的作用:
	1.存储非重复数据
    2.用于将序列类型去重
    3.逻辑判断 交集,并集,差集

3.2增

add() 参数为要添加的对象,通过多次添加数据可以发现添加后的元素位置不确定,无序添加
集合名.add(元素)
s = {'小川'}
s.add("木槿")
print(s)
s.add("阿宸")
print(s)
s.add("七零")
print(s)
s.add("乃荣")
print(s)

3.3 删

pop()随机删除一个元素
仅仅是在集合元素是字符串的时候,并且在cmd运行的时候才会随机删除,在pycharm中运行默认保持删除第一个元素
s.pop()
print(s)
s.pop()
print(s)
s.pop()
print(s)

remove() 有参数,参数为要删除的元素,如果元素不存在就报错
s.remove("小川")
print(s)
s.remove("1")
print(s)  # 元素不存在会报错

discard() 跟remove类似,但是元素不存在不会报错
s.discard("aaa")
print(s)  # 元素不存在不会报错

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

del  删除集合
del s  # 整个删除变量,先删除了变量再去打印变量s就会报错显示变量s不存在
print(s)

4 公共功能

  • 长度
  • for 循环
  • 减 (计算差集)

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

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JC03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值