Python入门(七)无序的字典和集合不容小觑

1.字典

访问字典里的参数
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> dict1['music']
KeyError: 'music'

这里报错是因为,字典中并没有key值为 'music',为了避免 KeyError 发生,有两个办法:

  • 先用 in 操作符判断一下 key 是否存在:
>>> 'music' in dict1
False
  • 用 get() 方法,在Key不存在的时候,返回None:
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> print (dict1.get('music'))
None
修改字典
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> dict1['singer']='kesha'
>>> dict1['song']='Rainbow'
>>> dict1
{'singer': 'kesha', 'sex': 'female', 'song': 'Rainbow'}
删除字典元素
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> del dict1['sex']  #删除键是'sex'的条目
>>> dict1
{'singer': 'GEM', 'song': '查克靠近'}
>>> dict1.clear()  # 清空词典中所有条目
>>> dict1
{}
>>> del dict1  # 删除词典
>>> dict1
NameError: name 'dict1' is not defined
字典的BIF

dict1

比较字典大小:operator()

>>> import operator   #首先要导入运算符模块
>>> operator.gt(dict1,dict2)  #意思是greater than(大于)
False
>>> operator.ge(dict1,dict2)   #意思是greater and equal(大于等于)
True
>>> operator.eq(dict1,dict2)  #意思是equal(等于)
True
>>> operator.le(dict1,dict2)  #意思是less and equal(小于等于)
True
>>> operator.lt(dict1,dict2)  #意思是less than(小于)
False
字典的内置方法
  • 浅拷贝字典,注和直接赋值不同:copy()
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> dict2=dict1
>>> dict3=dict1.copy()
>>> dict1['singer']='kesha'
>>> dict1['song']='Rainbow'
>>> dict1  #dict1改变
{'singer': 'kesha', 'sex': 'female', 'song': 'Rainbow'}
>>> dict2  #直接赋值得到的dict2跟着改变
{'singer': 'kesha', 'sex': 'female', 'song': 'Rainbow'}
>>> dict3  #浅拷贝得到的dict3保持不变
{'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
  • 创建一个新字典,以序列seq中元素做字典的键,字典所有键对应的初始值为value:fromkeys(seq[, value])
>>> seq = ('singer', 'sex', 'song')
>>> dict1 = dict.fromkeys(seq)
>>> dict1
{'singer': None, 'sex': None, 'song': None}
>>> dict2 = dict.fromkeys(seq,2)
>>> dict2
{'singer': 2, 'sex': 2, 'song': 2}

-以列表返回可遍历的(键, 值) 元组数组:items()

>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> dict1.items()
dict_items([('singer', 'GEM'), ('sex', 'female'), ('song', '查克靠近')])
  • 把字典dict2的键值对更新到dict里:update(dict2)
>>> dict1= {'singer': 'GEM', 'sex': 'female'}
>>> dict2= {'song': '查克靠近'}
>>> dict1.update(dict2)
>>> dict1
{'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
  • 以列表返回字典中的所有值:values()
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> list(dict1.values())
['GEM', 'female', '查克靠近']
  • 删除字典给定键 key 所对应的值,返回值为被删除的值:pop(key[,default])
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> pop1=dict1.pop('singer')
>>> pop1
'GEM'
  • 随机返回并删除字典中的一对键和值(一般删除末尾对):popitem()
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> pop1=dict1.popitem()
>>> pop1
('song', '查克靠近')
>>> dict1
{'singer': 'GEM', 'sex': 'female'}

任何情况下都可以使用此种方法吗?

>>> dict2={}
>>> pop2=dict2.popitem()
KeyError: 'popitem(): dictionary is empty'

上例说明,如果字典已经为空,调用此方法,就发生Error。


2.集合

set的内部结构和dict很像,唯一区别是不存储value,也就是说当用花括号括起来一堆没有映射关系的元素时就创建了一个集合。

访问集合里的参数

和字典一样,我们可以先判断要访问的参数是否在集合内:

>>> set1= {'酷狗音乐', '网易云音乐', '虾米音乐'}
>>> 'QQ音乐' in set1
False
更新集合
  • 用add()添加元素,注意如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了。
>>> set1= {'酷狗音乐', '网易云音乐', '虾米音乐'}
>>> set1.add('QQ音乐')
>>> set1
{'QQ音乐', '酷狗音乐', '网易云音乐', '虾米音乐'}
  • 用remove()删除元素,注意如果删除的元素不存在set中,会出现Error:
>>> set1= {'酷狗音乐', '网易云音乐', '虾米音乐'}
>>> set1.remove('QQ音乐')
KeyError: 'QQ音乐'
集合的内置方法

以下方法应用都比较简单,而且很多前面都已经提到过,所以就不在一一举例。
set

END!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值