首页 > 代码库 > python 学习笔记 三 字典

python 学习笔记 三 字典

字典

Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点:

数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典).

  ## Can build up a dict by starting with the the empty dict {}
  ## and storing key/value pairs into the dict like this:
  ## dict[key] = value-for-that-key
  dict = {}
  dict[a] = alpha
  dict[g] = gamma
  dict[o] = omega

  print dict  ## {‘a‘: ‘alpha‘, ‘o‘: ‘omega‘, ‘g‘: ‘gamma‘}

  print dict[a]     ## Simple lookup, returns ‘alpha‘
  dict[a] = 6       ## Put new key/value into dict
  a in dict         ## True
  ## print dict[‘z‘]                  ## Throws KeyError
  if z in dict: print dict[z]     ## Avoid KeyError
  print dict.get(z)  ## None (instead of KeyError)

 

dict函数

可以使用dict函数, 通过其他映射或者(键, 值)这样的序列对建立字典:

>>> items = [(‘name‘,‘Gumby‘), (‘age‘, 42)]

>>> d = dict(items)

>>> d

{‘age‘:42, ‘name‘: ‘Gumby‘}

dict函数也可以通过关键字来创建字典:

>>> d = dict(name=‘Gumby‘, age=42)

>>> d

{‘age‘:42, ‘name‘: ‘Gumby‘}

基本字典操作与字符串格式化

  • len(d): 返回键值对的数量
  • d[k]: 返回关联到键k上的值
  • d[k]=v: 将值v关联到键k上
  • del d[k]: 删除键为k的项
  • k in d: 检查键为k的项是否在d中, 注意这里查找的是键而不是值

使用字典格式化字符串:

>>> phonebook = {‘Beth‘: ‘9102‘, ‘Alice‘: ‘2341‘}

>>> "Alice‘s phone number is %(Alice)s." % phonebook

"Alice‘s phone number is 2341."

字典方法

  1.clear

清除字典中所有的项: d.clear(), 清除后d是一个空字典

  2.copy

返回一个具有相同键-值对的新字典: new_d = d.copy(), 这个方法实现的是浅复制(shallow copy), 也就是说修改了副本中的某个值时, 原字典也会受影响, 为避免这个问题, 采用深复制(deep copy): from copy import deepcopy  new_d = d.deepcopy().

  3.fromkeys

使用给定的键建立字典, value被设为None.

>>> d = {}

>>> d.fromkeys([‘name‘, ‘age‘])

>>> d

{‘name‘:None, ‘age‘:None}

  4.get

当我们用d[key]访问字典中不存在的项会出现KeyError, 而用get方法就不会:

>>> d = {}

>>> d.get(‘name‘)

None

用get方法访问不存在的键会得到None值, 我们可以自定义None值:

>>> d.get(‘name‘, ‘N/A‘)

‘N/A‘

当键存在, get方法和普通字典查询一样

  5. has_key

检查字典中是否含有给出的key, 有, 返回True否则返回False: d.has_key(k)

  6.items和iteritems

items方法将所有字典项以列表方式返回, iteritems的作用大致相同, 但会返回一个迭代器对象而不是列表.

  7.key和iterkeys

和上面的一样, 只不过列表元素是key

  8.values和itervalues

和上面一样, 列表元素是value

  9.pop

用于获得给定键的值, 然后从字典中移除这个键-值: v = d.pop(k)

  10. popitem

弹出字典中的一个随机项: d.popitem()

  11.setdefault

类似get, 不同的是, setdefault可以在字不含有key时自动为字典添加相应的键值

>>> d = {}

>>> d.setdefault(‘name‘, ‘bob‘)

‘bob

>>> d

{‘name‘: ‘bob‘}

如果不给出value, 会默认使用None.

  12.update

利用一个字典更新另一个字典: d.update(x), 在d中添加x的项, 若有相同的键, 会被覆盖.