Python基础 - 字典 Dict


人生苦短,我用Python:花了一生学Python

数据结构 :映射 mapping

A mapping object maps hashable values to arbitrary objects. Mappings are mutable objects. There is currently only one standard mapping type, the dictionary.

字典dict 指定值没有特殊的顺序,都存储在一个特殊的键key中,key可以是数字、字符串、或元组。key是不可变的。

创建字典:

  • 字典的创建格式:
>>> d = {key1:value1, key2:value2}

字典由多个键key及其对应的值value构成的对组成的(kye/value对称为项)。每个键/值(kye/value)对用冒号分隔开,整个字典包括在大括号{}中。
空字典(不包含任何项)由两个大括号组成,即{}

字典中,键key是唯一的,但值value不一定。值可以取任何数据类型,键必须是不可变的,如字符串、数字或元组。

  • dict() 函数
    可以用dict()函数,通过其他映射(如其他字典)或键/值序列对创建字典.
>>> stu = [('name','小明'),('num','001')]
>>> student = dict(stu)
>>> student
{'name': '小明', 'num': '001'}

dict()可以通过关键字参数创建字典:

>>> student = dict(name='小明',number='001')
>>> student
{'name': '小明', 'number': '001'}

字典的基本操作

  • 修改字典
    增加新键值对,修改或删除已有键值对
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s['小明'] = '005'    # 更新小明的学号
>>> s
{'小明': '005', '小红': '002', '小强': '003'}
>>> s['小东'] = '004'    # 添加一个学生
>>> s
{'小明': '005', '小红': '002', '小强': '003', '小东': '004'}
  • 删除字典元素
    del语句可以删除字典的一项,还可以删除整个字典。
>>> s = {'小明': '005', '小红': '002', '小强': '003', '小东': '004'}
>>> del s['小强'] #删除一个学生
>>> s
{'小明': '005', '小红': '002', '小东': '004'}
>>> del s   # 删除整个字典
>>> s
Traceback (most recent call last):
  File "", line 1, in 
    s
NameError: name 's' is not defined
  • 字典的特性
  1. 不允许同一个键key出现两次,创建时如果同一个键被赋值两次,后面的值会被记住。
  2. 将必须是不可变的,如字符串、数字或元组。不能是列表。
  • len()函数
    len(dict)函数用于计算字典元素的个数,即键的总数。
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> len(s)
3
  • type()函数
    type(variable)函数返回输入的变量类型。
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> type(s)

字典的方法

  • clear()方法
    用于删除字典中的所有项,不需要参数,原地操作,没有返回值(返回值为None
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.clear()
>>> s
{}
  • copy()方法
    返回一个具有相同键值对的新字典,这是方法是浅复制(shallow copy)。不需要参数,返回一个字典的浅复制。
    语法: dict.copy()
    (注:浅复制 与 深复制)

  • fromkeys()方法
    用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
    语法:dict.fromkeys(seq [, value])
    value为可选参数

>>> seq = ('home','age','sex')
>>> info = dict.fromkeys(seq)
>>> info
{'home': None, 'age': None, 'sex': None}
>>> info2 = dict.fromkeys(seq,10)
>>> info2
{'home': 10, 'age': 10, 'sex': 10}
  • get()方法
    返回指定键的值,如果值不在字典中,就返回默认值。
    语法:dict.get(key, default = None)
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.get("小明")
'001'
  • key in dict 方法
    字典中,in操作符用于判断键是否存在于字典中,如果键存在字典中就返回True,否则返回False
  • items() 方法
    以列表返回可遍历的(键,值)元组数组。
    语法: dict.items()
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.items()
dict_items([('小明', '001'), ('小红', '002'), ('小强', '003')])
  • keys()方法
    以列表返回一个字典所有键。
    语法:dict.keys()
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.keys()
dict_keys(['小明', '小红', '小强'])
  • setdefault()方法
    setdefault()方法与get()方法类似,用于获得与给定的键相关的值,如果键不存在于字典中,就会添加键并将值设为默认值。
    语法:dict.setdefault(key, defaukt=None)
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.setdefault('小明')
'001'
>>> s.setdefault('小东')
>>> s
{'小明': '001', '小红': '002', '小强': '003', '小东': None}
  • update()方法
    用于把字典dict2中的键值对更新到dict中。如果有相同的键就会被覆盖。
    语法:dict.update(dict2)
>>> s = {'小明': '001', '小红': '002'}
>>> s2 = {'小强': '003', '小东': None}
>>> s.update(s2)
>>> s
{'小明': '001', '小红': '002', '小强': '003', '小东': None}
  • values()方法
    以列表的形式返回字典中所有值。返回的列表中可以包含重复的元素。
    语法:dict.values()
>>> s = {'小明': '001', '小红': '002', '小强': '003', '小东': None}
>>> s.values()
dict_values(['001', '002', '003', None])
  • pop(key[,default])方法
    删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
>>> s = {'小明': '001', '小红': '002', '小强': '003', '小东': None}
>>> s.pop('小明')
'001'
  • popitem()方法
    随机返回并删除字典中的一对键和值(一般删除末尾对)。不用传入参数。返回一个键值对(key,value)形式。
>>> s = {'小明': '001', '小红': '002', '小强': '003', '小东': None}
>>> s.popitem()
('小东', None)
>>> s.popitem()
('小强', '003')
>>> s
{'小明': '001', '小红': '002'}

你可能感兴趣的:(Python基础 - 字典 Dict)