欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

Python学习之dict与set

发布时间:2017-04-24 21:02  回复:0  查看:1695   最后回复:2017-04-24 21:02  

 本文和大家分享的主要是python开发dictset相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助。

  . 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) 速度快

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

  缺点:占用内存大

  (2) 无序

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

  d = {

  'Adam': 95,

  'Lisa': 85,

  'Bart': 59

  }

  打印时:

  >>> print d

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

  (3) 元素不可变

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

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

  {

  '123': [1, 2, 3],  # key 是 strvaluelist

  123: '123',       # key 是 intvalue 是 str

  ('a', 'b'): True

  # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean

  }

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

  (4) key是唯一的

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

  .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() 并传入一个 listlist的元素将作为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会自动去掉重复的元素,原来的list4个元素,但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.添加:setadd()方法

  >>> s = set([1, 2, 3])

  >>> s.add(4)

  >>> print s

  set([1, 2, 3, 4])

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

  2.删除:setremove()方法

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

  >>> s.remove(4)

  >>> print s

  set([1, 2, 3])

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

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

 

 

来源:简书


您还未登录,请先登录

热门帖子

最新帖子