Python基础 - 字典 Dict

2018-05-20  本文已影响5人  彼岸的渔夫

人生苦短,我用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不一定。值可以取任何数据类型,键必须是不可变的,如字符串、数字或元组。

>>> 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'}
>>> s = {'小明': '005', '小红': '002', '小强': '003', '小东': '004'}
>>> del s['小强'] #删除一个学生
>>> s
{'小明': '005', '小红': '002', '小东': '004'}
>>> del s   # 删除整个字典
>>> s
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    s
NameError: name 's' is not defined
  1. 不允许同一个键key出现两次,创建时如果同一个键被赋值两次,后面的值会被记住。
  2. 将必须是不可变的,如字符串、数字或元组。不能是列表。
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> len(s)
3
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> type(s)
<class 'dict'>

字典的方法

>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.clear()
>>> s
{}
>>> 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}
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.get("小明")
'001'
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.items()
dict_items([('小明', '001'), ('小红', '002'), ('小强', '003')])
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.keys()
dict_keys(['小明', '小红', '小强'])
>>> s = {'小明':'001','小红':'002','小强':'003'}
>>> s.setdefault('小明')
'001'
>>> s.setdefault('小东')
>>> s
{'小明': '001', '小红': '002', '小强': '003', '小东': None}
>>> s = {'小明': '001', '小红': '002'}
>>> s2 = {'小强': '003', '小东': None}
>>> s.update(s2)
>>> s
{'小明': '001', '小红': '002', '小强': '003', '小东': None}
>>> s = {'小明': '001', '小红': '002', '小强': '003', '小东': None}
>>> s.values()
dict_values(['001', '002', '003', None])
>>> s = {'小明': '001', '小红': '002', '小强': '003', '小东': None}
>>> s.pop('小明')
'001'
>>> s = {'小明': '001', '小红': '002', '小强': '003', '小东': None}
>>> s.popitem()
('小东', None)
>>> s.popitem()
('小强', '003')
>>> s
{'小明': '001', '小红': '002'}
上一篇 下一篇

猜你喜欢

热点阅读