字典 dict - 键值对
- key不能重复;
- { } 内部是键值对,用逗号,隔开
info = { “k1”:”value1”, “k2”:value2 }
- 字典的value可以是任何值任何类型,甚至是嵌套字典;
- 字典的key,字典是按照哈希表的方式保存的,unhashable类型不能作为key,list/dict类型不能作为key
- 字典是无序的,每次打印顺序都不一样
- 字典中索引就是key,可以通过key取value,value = dict[key],同样可以嵌套索引
- 因为字典是无序的,所以不能通过切片取值
- 字典支持del删除,del info[key] 通过key删除键值对
- for循环迭代对字典取值的时候,默认取key
dict.keys() #取key dict.values() #取value k,v in dict.items() #取键值对
- clear() 清空
- copy() 浅拷贝
- fromkeys() 生成字典,第一个参数为key(可迭代),第二个参数为value,staticmethod
- get() 根据key取值,取不到返回None,或返回设定值
- items() keys() values()
- pop() 根据key删除一个键值对,并返回value,如果key不存在可以返回设定值dic.pop(key, arg) – key不存在则返回arg
- popitem() 字典中随机删除一个键值对并返回
- setdefault() 设置,dic.setdefault(key, value),如果key已经存在,不设置且返回字典中的key所对应的value,如果不存在,则用参数设置一个键值对key:value,并返回value
- update() 根据key更新value,有则覆盖,无则设置
- 在方法中,如果看到参数是 **kwargs 表示可以传入字典 **{k:v}
集合 set
由不同元素组成的集合,集合是一组无序排列的可hash的值(只能存放不可变类型),可以作为字典的key
定义:s = {1, 2, 4, 5} - 区别字典,字典元素是键值对
- 不同元素组成 – 会自动去重
- 集合是无序的
- 集合元素必须是不可变类型的元素
- set() 方法定义集合,通过for循环迭代
- add() 增加一个元素
- clear() 清空
- pop() 随机删除一个元素,并返回被删除的元素
- remove() 删除指定元素,删除不存在报错
- discard() 删除指定元素,元素不存在不报错
- copy()
- 集合的关系运算
& 交集 s1.intersection(s2)
| 并集 s1.union(s2)|
- 差集 s1.difference(s2)
- symmetric_difference() 交叉补集,s1 | s2 – (s1 & s2)
s1. symmetric_difference(s2) → s1 ^ s2 - difference_update()
s1.difference_update(s2)相当于s1=s1-s2 - intersection _update()
- symmetric_difference_update()
- isdisjoint() 如果没有交集返回True,否则False
- issubset() s1是否是s2的子集,是返回True否则False
- issuperset() s1是否是s2的父集
- update() 更新多个值,add()只能更新一个值
- set是可变类型,通过frozenset()可以定义不可变类型集合
- 如何把一个列表去重? li = [ … ]
list(set(li))