一、set 集合
1.定义
se = {1,2,'a','b'} #{1, 2, 'b', 'a'}
2.特点:元素唯一,无序
se = {1,1,3,3,2,4,4} #{1, 2, 3, 4}
se={4,3,2,1} #{1,2,3,4}
列表是可变的,所以不能满足唯一性
se3={1,2,[3,3,4]} #TypeError: unhashable type: 'list' list不可哈希
hash((1,2,3)) #元组可以哈希
3.定义一个空集合只能用set()
se3 = set()
se4 = {} #<class 'dict'>这是字典
4.集合的运算
se={1,2,3,4}
se2={3,4,5,6}
3 in se2 #True 属于,返回bool值
se < se2 #包含
se <= se2 #包含
#not in #不属于
4.1 & 交集 取两个集合重复的部分
se1 = {1,2,3,4}
se2 = {3,4,5,6}
se1 & se2 #{3,4}
4.2 | 并集 取所有元素
4.3 - 差集 前面的集合减去后面的集合元素重复的部分
4.4 ^ 与非集 取两个集合各自独有的元素
5.集合的方法
'''
'add', 'clear', 'copy', 'difference', 'difference_update',
'discard', 'intersection', 'intersection_update', 'isdisjoint',
'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference',
'symmetric_difference_update', 'union', 'update'
'''
5.1 s.add(x) 添加单个元素
# Add an element to a set
se.add(5) #{1,2,3,4,5} 无序的 添加单个元素
5.2 s.update() 添加多个元素
# Update a set with the union of itself and others. 放迭代对象
se.update('123') #{1, 2, 3, 4, '3', '2', '1'}
se.update([1,2,3]) #{1, 2, 3, 4, '3', '2', '1'}
5.3 s.remove() 移除元素
# Remove an element from a set; it must be a member.
se.remove(1) #{2, 3, 4, '3', '2', '1'} #指定移除
se.remove('1') #{2, 3, 4, '3', '2'}
5.4 s.clear() 清空集合
# Remove all elements from this set.
二、字典
1.创建:{key:value} (大括号创建字典的键时要加引号)
dict(key=value) (括号里赋值方式,名字=对象,不要引号)
字典里的键和值用':'隔开,一对键和值组成一个项,项和项之间用','隔开
di={'a':111,'b':222,'c':333}
di={} #class 'dict' 创建空字典
di2=dict(a=111) #{'a': 111}
a符合变量的命名规则
di2 = (2_a=111) #报错
di2 = (_a=111) #报错
2.特点:无序,键唯一不可变,重复会被重新复制
#取值和修改
di['c']=3 #{'c': 3}
#方法
'''
'clear', 'copy', 'fromkeys',
'get', 'items', 'keys', 'pop',
'popitem', 'setdefault', 'update', 'values'
'''
#
di.fromkeys(['a','b']) #{'a': None, 'b': None}
di.fromkeys(['a','b'],123) #{'a': 123, 'b': 123}
#get(k) 如果键k在,返回键k的值,不存在则返回None
di.get('c') #3
di.get('e')
di.get('e',888) #888
di.get('c',7) #3
#items() 返回字典的各个项
#?
di.items() #dict_items([('c', 3)])
di.keys() #dict_keys(['c'])
di.values() #dict_values([3])
di.pop('c')
di={'a':111,'b':222,'c':333}
di.popitem() #('c', 333)删除最后(实则没有顺序)
#di.setdefault()
di.setdefault('a') #111
di #{'a': 111, 'b': 222}
di.setdefault('c')
di #{'a': 111, 'b': 222, 'c': None}
di.setdefault('d',444) #{'a': 111, 'b': 222, 'c': None, 'd': 444}
#类似get 但是能改变字典
di.update({'a':123,'f':555}) #{'a': 123, 'b': 222, 'c': None, 'd': 444, 'f': 555}
a,b=1,2
a==1 and b==2
not a==1
a==1 and not b==3