Skip to content

字典 Dictionary

介绍

字典是一种可变容器模型,且可存储任意类型对象。字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

python
d = {key1 : value1, key2 : value2 }

tinydict1 = { 'a': 1, 'b': 2, 'b': '3' }
tinydict2 = { 'abc': 123, 98.6: 37 }
  • 注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict
  • 键一般是唯一的,如果重复则 最后的一个键值对 会替换前面的,值不需要唯一。
  • 值可以取任何数据类型,但键必须是 不可变数据类型,如字符串,数字或元组。

基本操作

python
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
  • 访问:tinydict['Name']
  • 更新:tinydict['Age'] = 8
  • 添加:tinydict['School'] = "RUNOOB"
  • 删除:del tinydict['Name']
  • 清空:tinydict.clear()
  • 删除整个字典:del tinydict

内置函数

  • cmp(dict1, dict2) 比较两个字典元素
  • len(dict) 计算字典元素个数,即键的总数
  • str(dict) 输出字典可打印的字符串表示
  • type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型

内置方法

  • dict.clear() 删除字典内的所有元素
  • dict.copy() 返回一个字典的浅复制
  • dict.fromkeys(seq[, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
  • dict.get(key[, val]) 返回指定键的值,如果键不在字典中返回默认值 None 或者设置的默认值
  • dict.items()列表 返回可遍历的键值对 元组 数组
  • dict.keys() 以列表返回一个字典所有的键
  • dict.setdefault(key, default=None) 如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值
  • dict.update(dict2) 把字典 dict2 的键/值对更新到 dict
  • dict.values() 以列表返回字典中的所有值
  • dict.pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。
    • 如果 key 存在,删除字典中对应的元素
    • 如果 key 不存在,返回设定的默认值 default
    • 如果 key 不在且默认值没有给定,触发 KeyError 异常
  • dict.popitem() 返回并删除字典中的最后一对键和值。

举例说明:

python
rawdict = {'Hello': 123}


# dict.fromkeys(seq[, value])
seq = ('Google', 'Runoob', 'Taobao')

thisdict = dict.fromkeys(seq)        # 不指定 value 默认为 None
thisdict = dict.fromkeys(seq, 10)    # {'Google': 10, 'Taobao': 10, 'Runoob': 10}
thisdict = rawdict.fromkeys(seq, 10) # 与 rawdict 无关


# dict.get(key[, value])
tinydict = {'Name': 'Runoob', 'Age': 27}

a = tinydict.get('Salary', 0.0)      # a = 0.0
b = tinydict.get('Age')              # b = 27


# dict.setdefault(key, default=None)
tinydict = {'runoob': '菜鸟教程', 'google': 'Google 搜索'}

a = tinydict.setdefault('runoob', None)  # 
b = tinydict.setdefault('Taobao', '淘宝')
print(tinydict) # {'runoob': '菜鸟教程', 'google': 'Google 搜索', 'Taobao': '淘宝'}

get()setdefault() 的区别主要在字典中没有 key 的情况下:

  • setdefault() 会修改原字典,加入 dict[key] = value
  • get() 不会修改原字典

Released under the MIT License.