廖雪峰 | 2.5 字典(dict)与集合(set)
2022-04-12 本文已影响0人
苦哈哈的柠檬水
dict
1,字典(dict)定义
dict
,全称dictionary,是由key-value
键值对组成的,可变的,无序的,key
不重复的数据集合。在其他语言中也称为map
,具有极快的查找速度。
2,dict
与list
问:如何实现,根据同学的名字查找对应的成绩?
(1)list
实现,以位置为媒介
>>> names = ['Michael', 'Bob', 'Tracy']
>>> scores = [95, 75, 85]
>>> names.index('Bob')
1
>>> scores[1]
75
(2)dict
实现
-
dict
创建:{}
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
-
dict
添加键值对
>>>d['Adam'] = 67
>>>d
{'Michael': 95, 'Bob': 75, 'Tracy': 85, 'Adam': 67}
- 替换
key
的value
值
>>> d['Jack'] = 90
>>> d['Jack']
90
>>> d['Jack'] = 88
>>> d['Jack']
88
-
pop(key)
删除key-value
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85, 'Adam': 67, 'Jack': 88}
- 判断
key
是否在dict
中:in
和.get()
,.get()
中如果key
不存在,可以返回None
,或者自己指定的value
注意:返回None
的时候Python的交互环境不显示结果
>>> 'Thomas' in d
False
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
(3)dict
与list
比较
-
dict
-
查找和插入的速度极快,不会随着
key
的增加而变慢; -
需要占用大量的内存,内存浪费多
-
list
-
查找和插入的时间随着元素的增加而增加
-
占用空间小,浪费内存很少
3,注意
-
dict
的key
必须是不可变对象 -
dict
根据key
来计算value
的存储位置,该算法称为哈希算法(Hash)
哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。
set
1,集合(set)定义
set
是由一组key
值组成,可变的,无序的,无重复元素的可迭代集合。可以看成数学意义上的无序和无重复元素的集合。
2,set
的创建与修改
-
set
的创建:set([ ])
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
- 重复元素自动被过滤
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
- 添加元素:
add(key)
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
- 删除元素:
remove(key)
>>> s.remove(4)
>>> s
{1, 2, 3}
- 取
set
的交集&
与并集|
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
3,可变对象与不可变对象
str
和tuple
是不可变对象,而list
是可变对象
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'
>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'
如上,不可变对象a、b
为str
,改变值后相当于赋值给新变量。
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
如上,可变变量a
,其值是可以被修改