dict
- dict的定义
dict
是一组无序的,key
不可变、不重复的,key-value
一 一对应的数据集>>> d = {'key':98,"baby":54} >>> d {'key': 98, 'baby': 54}
- dict的存储方式
dict是
key-value存储方式,即通过
key直接找到
value`的内存地址>>> d['baby'] 54 >>> d['baby']=98 >>> d {'key': 98, 'baby': 98}
- dict与list的查找方式
dict
的查找方式是通过查找key
,然后由key
指向value
的内存地址获得value
的值list
的查找方式是通过一个一个查找获得相应的数据
- dict相对于list的优缺点
-
dict
的缺点:占用内存空间大 -
dict
的优点:查找速度快,不会随key
的增多而变慢
-
- 判断元素存在的方法:
in
关键字与dict
的get()
方法-
in
>>> 'tom' in d False >>> 'peter' in d True >>> d {'peter': 88, 'lu': 33, 'baby': 99, '99': 80}
-
get(key)
注意哦:不存在>>> d {'peter': 88, 'lu': 33, 'baby': 99, '99': 80} >>> d.get('baby') 99 >>> d.get('no') >>> d.get('no') is None True
key
值get()
返回None
,交互模式不显示 -
get(key,x)
嘿嘿嘿,你想打印什么提示都可以>>> d.get('bob','不存在') '不存在' >>> d.get('bob',100) 100
-
-
dict
元素的添加:- 直接对一个
key
定义一个value
>>> d {'peter': 88, 'lu': 33, 'baby': 99} >>> d['tom']=[98,89] >>> d {'peter': 88, 'lu': 33, 'baby': 99, 'tom': [98, 89]}
-
append(value)
注意:>>> d['tom'].append(99) >>> d['tom'] [98, 89, 99]
append()
对单个的数据类型无效>>> d['baby'].append(99) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'int' object has no attribute 'append'
- 直接对一个
-
dict
元素的删除:pop(key)
-
pop(key)
:删除对应的key
>>> d {'peter': 88, 'lu': 33, 'baby': 99, '99': 80} >>> d.pop('99') 80 >>> d {'peter': 88, 'lu': 33, 'baby': 99}
-
set
-
set
的定义
set是一组无序、不重复的数据集,所有元素都是key
(即不可变对象)>>> d {'peter': 88, 'lu': 33, 'baby': 99} >>> s = set(d) >>> s {'lu', 'peter', 'baby'}
-
set
的元素添加与删除:add(key)
与remove(key)
- 添加
>>> s {'lu', 'peter', 'baby'} >>> s.add('bob') >>> s {'lu', 'peter', 'bob', 'baby'}
- 删除
>>> s {'lu', 'peter', 'bob', 'baby'} >>> s.remove('bob') >>> s {'lu', 'peter', 'baby'}
- 添加
不可变对象
- 常见的不可变对象:
string
、int
、float
和tuple
等 - 常见的可变对象:
list
---(sort()
)>>> m ['c', 't', 'r'] >>> m.sort() >>> m ['c', 'r', 't']
- 对于不可变对象
String
的‘可变’的解释
从上面我们可以看出来,>>> str = 'bad' >>> str.replace('a','A') 'bAd' >>> str 'bad'
str
的内容并没有改变,也就是说replace()
做的是新建了一个替换后字符串
key
-
key
只能是不可变对象,但不能是tuple
,因为tuple
中可以包含list
,即包含了可变对象!