字典是Python中最灵活的数据类型,同样用来存储多个不同类型的数据。但是它和列表、元组还是有一些本质区别的,而且主要是用来存储有关系的数据。
定义及基本特性
1.字典使用键值对来存储数据,相邻的键值对使用逗号分割,最外层使用大括号;
2.键,即key,类似于列表中的索引。值,即value,相当于列表中的元素本身;
3.键与值之间使用:来分割;
4.值可以是任何数据类型,但是键只能是字符串、数字、元组而且必须唯一。
5.字典是无序的。因为字典只能通过键来获得对应的值,因为字典只能通过键来获得对应的值。反过来也就是说当你想获得某个值时,你必须得到 键,已经人为控制了顺序。但是字典本身这种数据类型是无序的。
dic = {"key1":"value1", "key2":2, "key3":3.3, "key4":True}
输出类型及基本的输出操作
1.使用type()获得字典的数据类型;
2.使用print()直接输出字典;
3.使用print()输出指定的键对应的值;
print(dic) # {'key1': 'value1', 'key2': 2, 'key3': 3.3, 'key4': True} print(type(dic)) # <class 'dict'> print(dic["key1"]) # value1
字典的基本操作
1.增加数据
字典名[键]= 数据 如果键值已经存在,新的值会覆盖原来的值;
2.删除数据
del 字典名[键]= 数据
字典.pop(键) 删除诗句并返回
字典.clear() 清空字典的数据
dict2 = {"name":"zhangsan", "age":20, "height":1.75, "weight":80} print("dict2:",dict2) # dict2: {'name': 'zhangsan', 'age': 20, 'height': 1.75, 'weight': 80} dict2["weight"] = 90 print("修改weight后:",dict2) # 修改weight后: {'name': 'zhangsan', 'age': 20, 'height': 1.75, 'weight': 90} dict2["birth"] = "1993.11.18" print("增加birth后:",dict2) # 增加birth后:{'name': 'zhangsan', 'age': 20, 'height': 1.75, 'weight': 90, 'birth': '1993.11.18'} del dict2["birth"] print("删除birth后:",dict2) # 删除birth后:{'name': 'zhangsan', 'age': 20, 'height': 1.75, 'weight': 90} result=dict2.pop("height") print("删除height后:",dict2)# 删除height后:{'name': 'zhangsan', 'age': 20, 'weight': 90} print("被删除的值是:",result) # 被删除的值是:1.75其他方法:
setdefault(键值对):
dict2.setdefault("age",18) print("setdefault age=18:",dict2) # setdefault age=18: {'name': 'zhangsan', 'age': 20, 'weight': 90} dict2.setdefault("age1",66) print("setdefault age1=66:",dict2) # setdefault age1=66 {'name': 'zhangsan', 'age': 20, 'weight': 90, 'age1': 66} print("setdefault的作用:如果要键值存在,什么也不做;如果键值不存在,则将该键与值添加进字典!")
update(另一个字典):
dict2.update({"name":"new_name","place":"Beijing"}) print(dict2) # {'name': 'new_name', 'age': 20, 'weight': 90, 'age1': 66, 'place': 'Beijing'} print("A.update(B)的作用:如果B中有与A相同的键,则A中该键值改为B中的键值;如果B中有A不存在的键,则把键值对加入A中!")
字典的专有方法:
1.获得所有的键值;
dict3 = {"name":"lisi","age":25,"birth":"19951118"} keys = dict3.keys() # dict_keys(['name', 'age', 'birth']) print(keys)
注意:获得的是一个视图对象,但是在Python2中获得的是一个列表。视图对象占用空间比列表小。获得的视图对象可以使用for key in XXX 遍历:
2. 获得所有的值
values = dict3.values()
3.获得所有的键值对
items = dict3.items()
这三个方法获得的都是视图对象,都可以使用循环遍历。下面演示一个items的经典用法:
items = dict3.items() for item in items: print(item) 结果: ('name', 'lisi') ('age', 25) ('birth', '19951118')
遍历item输出的是元组,并且每个元组中有且仅有两个数据。因此,可以利用元组的解包把每一个数据拆开。
items = dict3.items() for key,value in items: print(key) print(value) 结果: name lisi age 25 birth 19951118