刻意练习——Python基础Task06.字典与集合

刻意练习——Python基础Task06.字典与集合

一、字典

  • 创建字典:可使用花括号或者使用dict()函数来创建字典。
  • 字典中的key不允许重复。
  • 删除key-value对:使用del语句。
  • in或not in:判断字典是否包含指定的key。
  • clear()方法:清空字典中所有的key-value对,对字典执行clear()方法后,该字典会变成一个空字典。
  • get()方法:根据key来获取value(相当于方括号语法的增强版——当使用方括号语法访问并不存在的key时,字典会引发KeyError错误;但get()方法会返回None,不会导致错误)。
  • update()方法:使用一个字典所包含的key-value对来更新已有的字典。
  • items():获取字典中的所有key-value对。
  • keys():获取字典中的所有key。
  • values():获取字典中的所有value。
    items()、keys()、values()使用后,返回的时dict_items、dict_keys、dict_values对象,须通过list()函数把它们转换成列表后返回。
  • pop()方法:获取指定key对应的value,并删除这个key-value对。
  • popitem()方法:随机弹出字典中的一个key-value对。
  • setdefault()方法:根据key来获取对应value的值(若key不存在,Python会自动设置一个默认的value)。
  • fromkeys()方法:使用给定的多个key创建字典,这些key对应的value默认都是None;也可以额外传入一个参数作为默认的value。
  • 使用字典格式化字符串
#在字符串模板中使用key
temp = '书名是:%(name)s,价格是:%(price)010.2f,出版社是:%(publish)s'
book = {'name':'数学分析','price':'42.30','publish':'高等教育出版社'}
#使用字典为字符串模板中的key传入值
print(temp % book)
  • 使用for-in循环遍历字典:需用到items()、keys()和value()
my_list = {'Chinese':130,'Math':148,'English':146}
for key,value in my_list.items():
	print('key:',key)
	print('value:',value)
for key in my_list.keys():
	print('key:',key)
	#再通过key获取value
	print('value:',my_list[key])
for value in my_list.values():
	print('value:',value)		

二、集合

  • set的创建:用花括号括起包含的元素。
  • set集合的特征:1.set不记录元素的添加顺序 2.元素不允许重复 3.set集合是可变可变容器(与set对应的frozenset的元素是不可变的)
  • 输入 [e for e in dir(set) if not e.startswith(’_’)] 来查看set集合的全部方法
    在这里插入图片描述
  • set集合的方法的用法
#使用花括号构建set集合
c = {'naruto'}
#添加元素
c.add('boruto')
c.add(886)
#删除指定元素
c.remove(886)
#判断是否包含指定字符串
print("c集合是否包含'naruto'字符串:",('naruto' in c)) #输出True
#使用set()函数(构造器)来创建set集合
a = set()
a.add(1)
a.add('KFC')
#使用issubset()方法判断是否为子集合
print("a集合是否为c的子集合?",a.issubset(c)) #输出False
#使用issubset()方法与<=运算符的效果相同
print("a集合是否为c的子集合?",(a <= c)) #输出False
#用issuperset()方法判断是否为父集合
print("c集合是否完全包含a集合?,c.issuperset(a))"  #输出False
#issuperset()方法与>=运算符的效果相同
print("c集合是否完全包含a集合?,(c>=a))"  #输出False
#用c集合减去books集合里的元素,不改变c集合本身
result1 = c - a
print(result1)
#difference()方法也是对集合做减法,与用“-”执行运算的效果完全一样
result2 = c.difference(a)
print(result2)
#用c集合减去a集合里的元素,改变c集合本身
c.difference_update(a)
print("c集合的元素:",c)
#删除c集合里的所有元素
c.clear()
#创建新的集合
d = {'raruto',555,666}
#计算两个集合的交集,不改变d集合本身
inter1 = d & c
print(inter1)
#intersection()方法也是获取两个集合的交集,与用&执行运算的效果完全一样
inter2 = d.intersection(c)
print(inter2)
#计算两个集合的交集,改变d集合本身
d.intersection_update(c)
print("d集合的元素:",d)
#将range对象包装成set集合
e = set(range(5))
f = set(range(3,7))
#对两个集合执行异或运算
xor = e ^ f
print('e和f执行xor的结果:',xor)
#计算两个集合的并集,不改变e集合本身
un = e.union(f)
#计算两个集合的并集,改变e本身
e.update(f)
  • 所有set集合中能改变集合本身的方法,frozenset都不支持;所有set集合中不改变集合本身的方法,frozenset都支持。
  • frozenset的主要作用
    1.当集合元素不需要改变时,使用frozenset代替set更安全
    2.当某些API需要不可变对象时,必须用frozenset代替set。如dict的key、set本身的集合元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值