文章标题

Python数据结构之字典

  • 字典可以原地修改 是可变的 无序 key不可重复 value可重复
  • 创建字典有3中方式
  • 1.直接创建

>>> a_dict={'name':'naruto','age':16}
>>> a_dict
{'age': 16, 'name': 'naruto'}
  • 2.利用元组tuple创建 dict(tuple)

>>> a_tu=(['one','naruto'],['two','sasuke'])
>>> n_dic=dict(a_tu)
>>> n_dic
{'two': 'sasuke', 'one': 'naruto'}

>>> ad=dict(name='naruto',girlfriend='hinata')
>>> ad  #注意:这里的key=value key不是字符串格式的
{'girlfriend': 'hinata', 'name': 'naruto'}
>>>
  • 3.使用空字典fromkeys(tuple,value)

>>> webs={}.fromkeys(('one','two'),'facebook')
>>> webs
{'two': 'facebook', 'one': 'facebook'}
>>>

字典的基本操作
  1. len(dic) 返回键值对的数量
  2. dic[key] 返回key对应的value
  3. dic[key]=value 为key赋值
  4. del dic[key] 删除key 及其value
  5. key in dic 检查字典中是否有key
  6. clear清空字典 得到一个空字典 与del不同 del将字典删除
  7. dic.get(key)与dic[key]不同的是 如果字典中不包含key是不会报错的 会返回None 还可以dic.get(key,default_value)没有key的情况下给个默认返回值
  8. dic.setdefault()与get()相似 不同点是 如果字典中没有包含key时会在原字典中添加新的键值对

浅复制与深复制
  • 浅复制 x.copy()产生一个新的引用指向原来的对象
    新老引用都指向同一对象
    浅复制 x.deepcopy()产生一个新的引用的同时复制一个新的对象 新引用指向新对象
  • 新老引用都指向不同对象 虽然对象内容是一样的 但是在内存中的地址不同

items iteritems

  • 将字典转元组列表

>>> webs
{'two': 'facebook', 'one': 'facebook'}
>>> webs.items() #直接返回一个列表 里面的元素是元组
[('two', 'facebook'), ('one', 'facebook')]
>>> webs
{'two': 'facebook', 'one': 'facebook'}
>>> webs.iteritems() #返回的是迭代器对象
<dictionary-itemiterator object at 0x7f2722ea92b8>
>>> list(webs.iteritems()) #用list函数将迭代器转列表
[('two', 'facebook'), ('one', 'facebook')]
>>>

- 此外 还有类似的 keys/iterkeys values/itervalues


pop和popitem
  • has_key()判断字典中是否包含key
  • dic.pop(key) 删除一个键值对 返回其value 必须有参数
  • dic.popitem() 随机删除一个键值对 并返回该键值对 不常用
  • dic.update(a_dic) dic.update([tuples])字典中追加元素

>>> webs
{'one': 'facebook'}
>>> webs.update({'lang':'python'})
>>> webs
{'lang': 'python', 'one': 'facebook'}
>>> webs.update([('age',12),('hobbt','lol')])
>>> webs
{'lang': 'python', 'age': 12, 'hobbt': 'lol', 'one': 'facebook'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值