字典:
由key和value组成,字典是有序的(python3.7中)。
字典是可变的
字典支持索引操作。
字典对应的哈希表中存储了哈希值、key和value
字典的key不能重复
集合:
集合没有key和value的配对,是无序的,且元素值唯一。
集合是可变的
集合不支持索引/切片操作。
集合对应的哈希表中仅存储了哈希值
集合的值不能重复
创建&初始化
dic = {'key'='value'}
dic1=dict()
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2) 键必须不可变,所以可以用数字,字符串或元组充当。不可用可变元素(列表、字典、集合)
set ={1,2}
set1 =set()
1)集合中只能添加一些不可变类型:数字,字符串或元组
2)集合本身可以修改,但是集合中的已存在的元素不能修改(因为已存在的元素是不可变类型)
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
字典和列表中无法直接转换
常用方法
可以通过dir查看所有内置方法
字典常用方法
- dict.copy() 返回字典的浅拷贝。复制后初始内容相同,id不同,后续原字典变化不会影响复制出来的字典
- dict.get(key,default=None) 返回字典key对应的值,如果找不到对应的key,则返回默认值
- dict.has_key(key) 如果key在字典中,返回true 否则返回False
- dict.items() 以列表返回字典对应的(key,value)
- dict.keys() 以列表返回字典所有的key
- dict.values() 以列表返回字典所以的value
- dict.setdefault(key,default=None)返回字典key对应的值,如果找不到,则在字典中增加key:default的键值对
- dict.update(dict1)把dict1的内容更新到dict内。只变更原有的dict的内容,不会生成xin的id。当key相同时,dict的value值会覆盖dict的值
- dict.pop(key)删除对应key的键值对,并返回删除的value值。如果键值不存在,会报错
- dict.popitem()删除字典中最后一个键值对
- del dict[key] 删除对应key的键值对
- del dict 删除字典
- dict[key]=value key存在则更新value值,key不存在,则新增键值对
集合常用方法
- s.add(value) 添加元素
- s.update() 修改当前集合,可以添加新的元素或集合到当前集合中
- s.discard(vallue)删除元素,当元素不存在时,不会报错
- s.remove(value)删除元素,当元素不存在时,会报错
- s.pop()随机删除一个元素
- s.copy() 浅拷贝集合
- s.difference(s1) 返回集合的差集,即返回的集合元素包含在第一个集合s中,但不包含在方法的参数s1中。会返回一个新集合
- s.difference_update(s1) s1中移除两个集合都存在的元素,直接在原来的集合中移除元素,没有返回值
- s.symmetric_difference(s1) 会移除两个集合中都存在的元素,会返回一个新的集合
- s.symmetric_difference_update(s1) 移除当前集合s与集合s1相同的元素,并将s1中不同的元素插入到当前集合s中
- s.intersection(s1,s2,s3...)用于返回两个或更多集合中都包含的元素,即交集。会返回一个新的集合
- s.intersection_update(s1s2,s3...) 用于获取两个或更多集合中都重叠的元素,即计算交集。在原始的集合上移除不重叠的元素。
- s.isdisjion(s1) 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
- s.issubset(s1)判断集合s的所有元素是否都包含在指定集合s1中,如果是则返回 True,否则返回 False。
- s.issuperset(s1)判断指定集合s1的所有元素是否都包含在原始的集合s中,如果是则返回 True,否则返回 False。
参考资料:
https://www.runoob.com/python3/python3-set.html