home1.gif

一. 基本特性


dict 的基本特性:

  • key-value 键值对的数据的集合
  • 可变的、无序的、key不重复

1. 字典初始化(定义 dict)


定义一个字典有多种手段,如:

  1. d = dict()
  2. d = {}
  3. d = {'a':10, 'b':'20', 'c':[1, 2, 3]}
  4. d = dict(**kwargs) # 使用key=value键值对初始化一个字典 dict(name='tom', age=18)
  5. dt = dict(iterable, **kwargs) # dict([('two', 2), ('one', 1), ('three', 3)])
  6. dt = dict(mapping, **kwargs) # dict({'three': 3, 'two': 2, 'one': 1}, four=4, five=5)

注意

  1. 字典中的 key 必须是可哈希的
  2. **kwargs : 形如定义形参 name=’name’,key不用加引号
  3. dict(iterable, **kwargs),iterable 是一个可迭代对象,其元素必须是一个二元结构

2. 字典元素的访问和修改


  • d[key]

返回key对应的值value,key不存在就抛出keyerror异常

  • d[key] = value

返回key对应的值修改为 value,key 不存在就添加新的 kv 对。

goon.gif

二. 字典相关的常用方法


了解一些字典的内置函数/方法。

1. 访问 dict 元素


  • get(key)
    1. dict.get(key[, default]) -> {value}
    说明:
  1. 返回 key 对应的值 value
  2. 如 key 不存在就返回缺省值 default,如未设 default 就返回 None
  • setdefault(key)
    1. dict.setdefault(key[, default]) -> {value}
    说明:
  1. 返回 key 对应的值 value
  2. 如 key 不存在就将 kv 对追加进 dict 里(value 为 default),并返回 defaul;如 default 未设,缺省为 None

2. 增加或修改 dict 元素


  • update()
    1. dict.update([other_dict]) -> None
    说明:
  1. 使用另一个字典的 kv 对更新本字典;
  2. key 不存在就添加,key 存在就覆盖原对应的value值;
  3. 就地修改,返回None

3. 删除 dict 元素


  • pop()
    1. dict.pop(key[, default])
    说明:
  1. 必须有 key 参数,字典中存在 key 就移除它,并返回它的value;
  2. key 不存在,返回给定的 default
  3. 如 default 未设置,而 key 又不存在则抛出异常
  • popitem()
    1. dict.popitem() -> tuple(k, v)
    说明:
  1. 移除并返回一个任意的键值对,一般移除最后一个 kv 对;
  2. 若 dict 为空,则抛出异常;
  • clear()

    1. dict.clear()

    清空字典。

  • del 语句

    1. a = True
    2. b = [6]
    3. d = {'a': 1, 'b': b, 'c': [1,3,5]}
    4. del a
    5. del b
    6. del d[c]

    del 删除对象,如果是引用,则是减少了一个对象的引用。所以,del 实际上删除的是名称,而不是对象。

4. 遍历字典


  • for k in d

    1. for k in dict_obj:
    2. print(k) # 遍历key
    3. print(dict_obj[k]) # 遍历 value
  • for k in d.keys()

    1. for k in dict_obj.keys():
    2. print(k) # 遍历key
    3. print(dict_obj.get(k)) # 遍历 value
  • for item in d.items() ```python for item in dict_obj.items(): print(item) # item 是一个 (k, v) 二元组

for k, v in dict_obj.items(): print(k, v) ```

小结:
d.keys()、d.values()、d.items() 方法返回一个类似生成器的可迭代对象,不会把返回结果复制到内存中。

end1.gif