1. 字典的定义
字典是一个可变对象,它可以存储任意类型的对象。
字典元素由键值对组成,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 。
其中键必须是唯一的,而值可以不唯一。值可以是任何数据类型,但键必须是不可变的,如字符串,数字或元组。
2. 字典的创建
格式:dict = {key1:value1, key2:value2, key3:value3}。
空字典(不包含任何键值对)由两个大括号组成,如{}。
dict1 = {} # 定义一个空字典
dict2 = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳"}
也可以使用dict()函数来创建字典,dict()函数可以将序列转化为字典
例如:
student = [("小明", 100), ("小兰", 98), ("小张", 88)]
dict(student) => 结果:{"小明":100, "小兰":98, "小张":88 }
再例如:
dict(name="霜花似雪", age=25, address="广东深圳")
结果:{"name":"霜花似雪", "age":25, "address":"广东深圳"}
3. 字典的基本操作
(1)访问字典里的值
通过字典名[key]的方式来访问字典里的值,
例如:
user = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳"}
user["name"] => 结果:霜花似雪
user["age"] => 结果:25
user["phone"] => 结果:报错,原因是键phone不存在
(2)修改或添加字典元素
通过给字典名[key]赋一个新值来修改字典;
向字典添加新的键值对来向字典添加元素;
例如:
user = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳"}
user[name] = "东方不败" # 修改
user[age] = 30 # 修改
user[phone] = "18295514499" # 添加
(3)删除字典元素
这里的删除指的是显式删除,显式删除一个字典使用del命令来实现,使用del可以删除字典的某个元素,也可以删除整个字典。
user = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳"}
del user["age"] # 删除字典中的age键值对
del user # 删除整个字典
4. 字典健的特性
(1)字典的键是唯一的,且是不可变对象,字典健可以是字符串,数字或元组。字典的值可以是任何对象(Python中一切皆对象),既可以是标准对象,也可以是用户定义的对象。
(2)在一个字典中,不允许同一个键出现两次。创建字典时,如果同一个键出现两次,后面的键值对会覆盖前面的。
(3)字典的键必须是不可变对象,可以是数字,字符串或元组,而不能是列表。
5. 字典方法
(1)len(dict) 用于获取字典的元素个数,换句话说是有几对键值对。
(2)str(dict) 用于将字典转化为字符串,以可以打印的字符串表示。
(3)type(dict) 用于返回输入的变量类型,如果变量是字典就返回字典类型。
6. 字典的格式化字符串
字典的格式化方式是在每个转换说明符中的%字符后面加上用圆括号括起来的键,再跟上其他说明元素。
例如:
user = {"name":"霜花似雪", "age":25, "height":171, "address":"广东深圳", "money": 123652562.7656256}
print("%(name)s" %user) => 结果: 霜花似雪
print("%(age)d" %user) => 结果: 25
print("%(money).4f" %user) => 结果: 123652562.7656
7. 字典与列表的区别
当字典和列表中的数据量很大时,list的查询效率会大大下降,而字典无论有多大,查询速度都会很快。
字典的实现原理与查字典是一样的,查询速度很快。
字典的特点是:
(1)查找和插入的速度极快,不会因为随着key的增加而变慢。
(2)字典需要占用大量的内存,内存浪费多。
列表的特点是:
(1)查找和插入时间随着元素的增加而增加。
(2)列表占用的空间较小,内存浪费少。
字典使用空间换时间,字典内部存放的顺序和键放入的顺序没有关系。
代码示例:
#!/usr/bin/python3 # -*- coding: utf-8 -*- # author : liuhefei # Time : 2019/11/30 # desc: Python数据类型之字典 if __name__ == "__main__": # 创建字典 dict1 = {} # 创建一个空字典 print("dict1 = ", dict1) dict2 = {"name": "霜花似雪", "age": 25, "height": 171, "address": "广东深圳"} print("dict2 = ", dict2) # 使用dict()函数创建字典 student = [("雪儿", 88), ("梦梦", 99), ("婷婷", 90), ("姗姗", 86), ("兰兰", 93)] stu = dict(student) print("stu = ", stu) user = dict(name="霜花似雪", age=25, height=171, address="广东深圳") print("user = ", user) # 字典的基本操作 # 访问字典里的值 product = {"name": "华为荣耀20", "stock": 100, "price": 3999, "address": "广东东莞"} print("product = ", product) print("product['name'] = ", product['name']) print("product['price'] = ", product['price']) #print("product['color'] = ", product['color']) # 将会报错,键不存在 # 修改或添加字典元素 product['name'] = "华为荣耀20 Pro" product['price'] = 4998 print("product = ", product) product['color'] = ["幻影黑", "幻影白", "翡翠蓝"] product['size'] = [(478, 680), (536, 754)] print("product = ", product) # 删除字典元素 del product['address'] # 删除字典的address键值对 print("product = ", product) phone = product print("phone = ", phone) del phone # 删除整个字典 print("product = ", product) # 字典健的特性 mi = {"name": "小米C9", "price": "1899", "name": "小米CC9", "price": 2999} print("mi = ", mi) number = {100: "10*10", "沉鱼落雁": "闭月羞花", ("三国", "貂蝉"): "美女"} print("number = ", number) # 字典方法 # len(dict) print("len(mi) = ", len(mi)) print("len(number) = ", len(number)) # str(dict) print("str(mi) = ", str(mi)) print("str(number) = ", str(number)) # type(dict) print("type(mi) = ", type(mi)) print("type(number) = ", type(number)) # 字典格式化 user = {"name": "霜花似雪", "age": 25, "height": 171, "address": "广东深圳", "money": 123652562.7656256} print("name = %(name)s" % user) print("age = %(age)d" % user) print("money = %(money).4f" % user)
字典函数:
1. dict.clear():该方法用于删除字典内的所有元素(清空字典),没有返回值(返回值为None)
2. dict.copy():(复制)该函数用于返回一个具有相同键值对的新字典,是浅复制,因为值本身是相同的,而不是副本。
3. dict.fromkeys(seq[, value]): 该函数用于创建一个新字典,以序列seq中的元素做字典的键,value为字典所有键对应的初始值。
参数:dict表示指定字典;seq表示字典键值列表;value表示可选参数,用于设置键序列(seq)的值。
该方法返回一个列表。
4. dict.get(key, default=None): 该函数用于获取指定键key的值,如果值不在字典中,就返回默认值。
参数:dict表示指定字典;key表示字典中要查找的键;default用于指定默认值,当键的值不存在时返回该默认值。
该方法返回结果为指定键的值,如果值不在字典中,就返回默认值None。
5. key in dict : in操作用于判断键key是否存在于字典dict中,如果键key在字典中,则返回True,不在字典中,则返回False。
6. dict.items(): 该函数以列表返回可遍历的(键,值)元组数组。
7. dict.keys(): 该函数以列表返回一个字典的所有键
8. dict.setdefault(key, default=None): 该函数用于获取与给定键相关联的值,如果字典中不存在键key,就会添加键并将值设置为默认值。
参数:dict为指定的字典;key表示查找的键;default表示键不存在时设置的默认值。
该方法没有任何返回值。
9. dict.update(dict2): (更新或合并)该函数用于把字典dict2中的键值对更新到字典dict中。
参数:dict表示指定的字典;dict2表示要添加到指定字典dict中的字典。
该方法没有任何返回值。
10. dict.values(): 该函数以列表的形式返回字典中的所有值。它与返回键的列表不同,返回的列表中可以包含重复的值。
返回结果为字典中的所有值。
11. pop(key[, default]): 该函数用于删除字典给定键key所对应的值,返回值为被删除的值。key值必须给出,否则返回default值。
参数:key要删除的键值;default如果没有key,返回default值。
12. popitem(): 该函数用于随机返回被删除字典中的最后一对键和值。如果字典为空,却调用了此方法,就报异常KeyError错误。
返回一个键值对(key,value)形式,按照后进先出的顺序规则,即最末尾的键值对。
代码示例:
#!/usr/bin/python3 # -*- coding: utf-8 -*- # author : liuhefei # Time : 2019/11/30 # desc: 字典函数 if __name__ == "__main__": dict1 = {"name": "霜花似雪", "age": 25, "height": 171, "address": "广东深圳"} product = {"name": "华为荣耀20", "stock": 100, "price": 3999, "address": "广东东莞", "color": ["幻影黑", "幻影白", "翡翠蓝"]} number = {100: "10*10", "沉鱼落雁": "闭月羞花", ("三国", "貂蝉"): "美女"} # dict.copy() dict2 = dict1.copy() print("dict2 = ", dict2) product1 = product.copy() print("product1 = ", product1) # dict.fromkeys(seq[, value]) dict3 = {} seq = ("北京", "上海", "广州", "深圳") city = dict3.fromkeys(seq) print("city = %s" % city) city1 = dict3.fromkeys(seq, 10000) print("city1 = %s" % city1) # dict.get(key, default=None) print("dict1.get('name') = ", dict1.get('name')) print("dict1.get('weight') = ", dict1.get('weight')) print("product.get('color') = ", product.get('color')) print("product.get('kg', 0.67) = ", product.get('kg', 0.67)) # key in dict print("(100 in number) = ", 100 in number) print("('color' in product) = ", 'color' in product) print("('沉鱼落雁' 在字典number中) = %s" % ('沉鱼落雁' in number)) # dict.items() print("dict1.items() = ", dict1.items()) print("product.items() = ", product.items()) print("number.items() = %s" % number.items()) # dict.keys() print("dict1.keys() = ", dict1.keys()) print("product.keys() = ", product.keys()) print("number.keys() = %s" % number.keys()) # dict,values() print("dict1.values() = ", dict1.values()) print("product.values() = ", product.values()) print("number.values() = %s" % number.values()) # dict.setdefault() print("dict1.setdefault('name') = ", dict1.setdefault('name')) print("dict1.setdefault('name', '豆豆') = ", dict1.setdefault('name', '豆豆')) print("product.setdefault('send', '顺丰快递') = ", product.setdefault('send', "顺丰快递")) print("product = ", product) # dict.update(dict2) girl = {"姗姗": "A罩杯", "婷婷": "B罩杯", "梦梦": "C罩杯"} girl1 = {"雨婷": "B罩杯", "兰婷": "C罩杯", "梦婷": "B罩杯"} girlAll = girl.update(girl1) print("girlAll = ", girlAll) # dict.pop(key[, default) print("dict1.pop('height') = ", dict1.pop('height')) # 如果要删除的key不存在,一定要指定默认值,否则会报错 print("dict1.pop('weight', 74) = ", dict1.pop('weight', 74)) print("number.pop(100) = ", number.pop(100)) # dict.popitem() print("dict1.popitem() = ", dict1.popitem()) print("product.popitem() = ", product.popitem()) print("number.popitem() = ", number.popitem()) # dict.clear() print("dict2.clear() = ", dict2.clear()) print("product1.clear() = ", product1.clear())
来源:gzh(学虽易学好难 study3344)
结束语:路是自己选的,后悔的话,也只能往自己的肚子里咽。
热门评论
为你的坚持学习点赞!?