刻意练习——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本身的集合元素。
来源:https://blog.csdn.net/weixin_45774706/article/details/102759897