python:字典(dict)

  • Python中对dict进行了支持,使用键-值(key-value)存储,查找速度很快。

比如,要用dict实现根据商品名查找销量,只需要一个“商品”-“销量”的对照表,直接通过商品就可以查到销量:

In [1]:
d = {'rice':35, 'wheat':101, 'corn':67}
d['rice']
Out[1]:
35
  • 把数据放入dict还可以直接通过key放入:
In [2]:
d['egg'] = 33
d
Out[2]:
{'corn': 67, 'egg': 33, 'rice': 35, 'wheat': 101}
  • 一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值冲掉:
In [3]:
d['corn'] = 88
d
Out[3]:
{'corn': 88, 'egg': 33, 'rice': 35, 'wheat': 101}
  • 如果key不存在,dict就会报错。要避免key不存在的错误,有两种办法,一是通过 in 判断key是否存在,二是通过dict提供的 get 方法,如果key不存在,可以返回None(返回None的时候Python的交互式命令行不显示结果),或者自己指定的value:
In [ ]:
d['meat']
In [5]:
'meat' in d
Out[5]:
False
In [6]:
d.get('meat')
In [7]:
d.get('meat',45)
Out[7]:
45
  • 删除一个key,使用pop(key)方法,对应的value也会从dict中删除:
In [8]:
d.pop('rice')
d
Out[8]:
{'corn': 88, 'egg': 33, 'wheat': 101}
  • 有下面几点需要注意:
  1. dict内部存放的顺序和key放入的顺序是没有关系的
  2. dict查找和插入的速度极快,不会随着key的增加而增加,但是需要占用大量的内存,内存浪费多
  3. dict的key必须是不可变对象。字符串、整数等都是不可变的,可以放心地作为key,而list是可变的,就不能作为key:
In [9]:
k = [3,4,5]
d[k] = 6
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-725fccd6cc45> in <module>()
      1 k = [3,4,5]
----> 2 d[k] = 6

TypeError: unhashable type: 'list'


  • 常见字典操作方法

D.clear()删除字典内所有元素

D.copy()返回一个字典的复制

D.fromkeys(seq,val)创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

D.get(key, default=None)返回指定键的值,如果值不在字典中返回default值

D.has_key(key)如果键在字典dict里返回true,否则返回false

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

D.keys()以列表返回一个字典所有的键

D.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

D.update(dict2)把字典dict2的键/值对更新到dict里

D.values()以列表返回字典中的所有值

D.pop(key)删除一个键并返回它的值,类似于列表的pop,只不过删除的是一个键不是一个可选的位置

del D[key]删除键

D[key] = 42新增或修改键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值