Python学习笔记--dict与set

作者: 琉璃飞瑾 | 来源:发表于2017-04-23 01:28 被阅读0次
Python学习笔记--dict与set

一. dict的形式

dict={
   key:value,
   key:value,
   key:value,
   ...
}

(1) dict是集合,用len()可以计算集合的大小。

(2) dict是用花括号{}表示的,注意与list(用方括号[]表示)和tuple(用元括号()表示)的区别

(3) 最后一对键值末尾可以不加逗号

注意: 一个 key-value 算一个长度

二. 访问dict

(1)方法一

1.方式:

通过 key 访问 dict 的value。

2.举例:

>>> d = {
...     'Adam': 95,
...     'Lisa': 85,
...     'Bart': 59
... }
>>> print d['Adam']
95

3.注意:

key是否正确,如不正确则会报错:NameError

解决方法:

if 'Paul' in d:
...     print d['Paul']
...
>>>

如果 ‘Paul’ 不存在,if语句判断为False,自然不会执行 print d[‘Paul’] ,从而避免了错误。

(2)方法二

1.方式:

dict.get(key),key存在返回value,否则返回None

2.举例:

>>> print d.get('Bart')
59
>>> print d.get('Paul')
None

三.dict的特点

(1) 速度快

无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

缺点:占用内存大

(2) 无序

存储的key-value序对是没有顺序的!这和list不一样.

d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}

打印时:

>>> print d
{'Lisa': 85, 'Adam': 95, 'Bart': 59}

打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。

(3) 元素不可变

作为 key 的元素必须不可变,value是否可变无所谓。

list是可变的,就不能作为 key。

{
'123': [1, 2, 3],  # key 是 str,value是list
123: '123',       # key 是 int,value 是 str
('a', 'b'): True
# key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean
}

注: 一般key用字符串表示,因为用起来方便.

(4) key是唯一的

dict的作用是建立一组 key 和一组 value 的映射关系,则dict的key是不能重复的。

四.dict的更新

方式:

         通过dict[key]=value

         原因:dict是可变的

举例:

>>> d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
>>> d['Paul'] = 72 #通过dict[key]=value
>>> print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}

注意:如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value

五.dict的遍历

方式:

         for key in dict的方式

举例:

>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
...     print key
...
Lisa
Adam
Bart

六. set

为什么要用set:

有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。

set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

set的适用场合:

判断是否存在

(1)set的创建

方式:调用 set() 并传入一个 list,list的元素将作为set的元素

>>> s = set(['A', 'B', 'C'])
>>> print s
set(['A', 'C', 'B'])

注意:set内部存储的元素是无序的。

(2)set的特点

1.set不能包含重复的元素

>>> s = set(['A', 'B', 'C', 'C'])
>>> print s
set(['A', 'C', 'B'])
>>> len(s)
3

结果显示,set会自动去掉重复的元素,原来的list有4个元素,但set只有3个元素。

2.不存储value

判断一个元素是否在set中速度很快。

3.key不可变

4.无序

(3)set的访问

因为set存储的是无序集合,所以我们只能判断一个元素是否在set中。

>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
>>> 'Bart' in s
True
>>> 'Bill' in s
False

(4)set的遍历

方式:通过 for 循环实现。

>>> s = set(['Adam', 'Lisa', 'Bart'])
>>> for name in s:
...     print name
...
Lisa
Adam
Bart

(5)set的更新

1.添加:set的add()方法

>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])

注意:如果添加的元素已经存在于set中,add()不会报错,但是不会加进去

2.删除:set的remove()方法

>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])

如果删除的元素不存在set中,remove()会报错

用add()可以直接添加,而remove()前需要判断。

相关文章

网友评论

    本文标题:Python学习笔记--dict与set

    本文链接:https://www.haomeiwen.com/subject/rtyezttx.html