在Python3中字典(dictionary ,简写为dict)是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 (key=>value) 对用冒号 ( : ) 分割,每个对之间用逗号 (,) 分割,整个字典包括在花括号 ({}) 中 ,格式如下所示:
dict = {key1 : value1, key2 : value2 }
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
与列表取值类似,但列表取值时使用索引,字典取值时使用key,如下实例:
#!/usr/bin/python3
dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
dict['Name']: W3CSchool
dict['Age']: 7
3、修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
#!/usr/bin/python3
dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # 更新 Age
dict['School'] = "W3Cschool教程" # 添加信息,直接创建
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
4、删除字典元素
del 能删单一的元素也能清空字典。我们可以用它来删除字典中的一组键值对也可以用来删除整个字典。另外使用clear()也能删除字典。如下实例:
#!/usr/bin/python3
dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键 'Name'
dict.clear() # 删除字典
del dict # 删除字典
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
Traceback (most recent call last):
File "test.py", line 9, in
print ("dict['Age']: ", dict['Age'])
TypeError: 'type' object is not subscriptable
5、字典内置函数
- len(dict)
计算字典元素个数,即键的总数 - str(dict)
以可打印的字符串输出字典
dict1={'name':'zps','age':20,'sex':'man','hobby':'coding'}
print(dict1)
print(str(dict1))
{'name': 'zps', 'age': 20, 'sex': 'man', 'hobby': 'coding'}
{'name': 'zps', 'age': 20, 'sex': 'man', 'hobby': 'coding'}
- type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。
删除字典内所有元素
dict1={'name':'zps','age':20,'sex':'man','hobby':'coding'}
print(dict1)
dict1.clear()
print(len(dict1))
{'name': 'zps', 'age': 20, 'sex': 'man', 'hobby': 'coding'}
0
(2)copy()
返回一个字典的浅复制
(3)fromkeys(seq[, value]))用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
seq=('name','age','sex','hobby')
dict1=dict.fromkeys(seq)//dict调用函数
print(dict1)
dict2=dict.fromkeys(seq,'未知')//指定了初始值
print(dict2)
{'name': None, 'age': None, 'sex': None, 'hobby': None}
{'name': '未知', 'age': '未知', 'sex': '未知', 'hobby': '未知'}
(4)get(key, default=None)
返回指定键的值,如果值不在字典中返回默认值。
dict1={'name':'zps','age':20,'sex':'man','hobby':'coding'}
print(dict1)
print('name:%s' %dict1.get('name'))
print('weight:%s' %dict1.get('weight'))
{'name': 'zps', 'age': 20, 'sex': 'man', 'hobby': 'coding'}
name:zps
weight:None
(5)key in dict
如果键在字典里返回true,否则返回false。
(6)dict.items()以列表返回可遍历的(键, 值) 元组数组。
dict1={'name':'zps','age':20,'sex':'man','hobby':'coding'}
print(dict1.items())
dict_items([('name', 'zps'), ('age', 20), ('sex', 'man'), ('hobby', 'coding')])
(7)dict.keys()
以列表返回一个字典所有的键
(8)dict.setdefault(key, default=None)和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。
#!/usr/bin/python3
dict = {'Name': 'W3CSchool', 'Age': 7}
print ("Age 键的值为 : %s" % dict.setdefault('Age', None))
print ("Sex 键的值为 : %s" % dict.setdefault('Sex', None))
print ("新字典为:", dict)
Age 键的值为 : 7
Sex 键的值为 : None
新字典为: {'Name': 'W3CSchool', 'Age': 7, 'Sex': None}
(9)update()
把字典dict2的键/值对更新到dict里
#!/usr/bin/python3
dict = {'Name': 'W3CSchool', 'Age': 7}
dict2 = {'Sex': 'female' }
dict.update(dict2)
print ("更新字典 dict : ", dict)
更新字典 dict : {'Name': 'W3CSchool', 'Age': 7, 'Sex': 'female'}
(10)dict.values()
以列表返回字典中的所有值
dict1={'name':'zps','age':20,'sex':'man','hobby':'coding'}
print(dict1.values())
dict_values(['zps', 20, 'man', 'coding'])



