集合
type=set
a = {‘q’, ‘w’, ‘e’, ‘q’, ‘r’}
- 集合是一个无序不重复元素的集
- 基本功能包括关系测试(‘e’ in a ->True)和消除重复元素(a->{‘q’, ‘w’, ‘e’, ‘r’})
- 集合对象支持 union(联合),intersection(交),difference(差)和 symmetric difference(对称差集)等数学运算
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # a 去重后的字母
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # a 有而 b 没有的字母
{'r', 'd', 'b'}
>>> a | b # 存在于 a 或 b 的字母
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # a 和 b 都有的字母
{'a', 'c'}
>>> a ^ b # 存在于 a 或 b 但不同时存在的字母
{'r', 'd', 'b', 'm', 'z', 'l'}
- 大括号或 set() 函数可以用来创建集合。注意:想要创建空集合,你必须使用 set() 而不是 {}。后者用于创建空字典
- 集合和字典基本相同,唯一的区别,就是集合没有键和值的配对,是一系列无序的、唯一的元素组合
- 集合并不支持索引操作,因为集合本质上是一个哈希表,和列表不一样
- 添加元素 a.add(‘t’)
- 弹出元素 a.pop() 随机弹出一个元素
字典
data = {‘a’: 1, ‘b’: ‘2’}
- 字典是键值对(key:value)集合(v3.6前是无序的,3.7+定义为有序)
- 同一个字典内的键必须是互不相同的
- 一对大括号 {} 创建一个空字典。初始化字典时,在大括号内放置一组逗号分隔的键:值对,这也是字典输出的方式
- 取key的值:data.keys() 取value的值:data.get(‘a’)->1 data[‘a’]->1
- 加入值对:dict[‘key’]=‘value’
- 删除值对:del data[‘key’]
- 键是否存在 ‘b’ in data ->True
- d = {‘b’: 1, ‘a’: 2, ‘c’: 10} , d.items()遍历字典
根据字典键的升序排序 d_sorted_by_key = sorted(d.items(), key=lambda x: x[0])
根据字典值的升序排序 d_sorted_by_value = sorted(d.items(), key=lambda x: x[1]) - 同时遍历两个序列,用zip()函数
>>> a = ['Pradeepto', 'Kushal']
>>> b = ['OpenSUSE', 'Fedora']
>>> for x, y in zip(a, b):
... print("{} uses {}".format(x, y))
...
Pradeepto uses OpenSUSE
Kushal uses Fedora
- 字典中的键必须是不可变类型,比如你不能使用列表作为键。
- dict() 可以从包含键值对的元组中创建字典
dict((‘e’, 5), (‘f’, 6)) -> {‘e’: 5, ‘f’: 6} - 相比于列表和元组,字典的性能更优,特别是对于查找、添加和删除操作,字典都能在常数时间复杂度内完成