Python基础之字典
一、特点
(1) 将一系列键值对用逗号分隔开,用大括号{}括起来。
(2) 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组(列表不行)。
(3) 字典是一种动态结构,可随时在其中增加、删除或修改键值对。
二、基础知识
1. 创建字典
1.1 创建空字典
方法一:直接创建
emptydict = {}
方法二:使用dict函数创建
emptydict = dict()
1.2 创建带有元素的字典
方法一:
dic1={'name':'wj','age':'18'}
print(dic1) # {'name': 'wj', 'age': '18'}
方法二:
dic2=dict(name='wj',age='18')
print(dic2) # {'name': 'wj', 'age': '18'}
方法三:
dic3=dict([('name','wj'),('age','18')])
print(dic3) # {'name': 'wj', 'age': '18'}
方法四:zip()函数
a=['name','age']
b=['wj','18']
print(dict(zip(a,b))) # {'name': 'wj', 'age': '18'}
2. 访问字典
字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。
但是,与list类似,字典采用把相应的键放入方括号内获取对应值的方式取值。当key值不存在时,则报错。
dic1={'name':'wj','age':'18'}
print(dic1['age']) # 18
print(dic1['gender']) # KeyError: 'gender'
3. 增加和修改
由于一个key只能对应一个值,所以,多次对一个key赋值,后面的值会把前面的值冲掉。
dic1={'name':'wj','age':'18'}
dic1['eat']='apple'
print(dic1) # {'name': 'wj', 'age': '18', 'eat': 'apple'}
dic1['eat']='food'
print(dic1) # {'name': 'wj', 'age': '18', 'eat': 'food'}
4. 删除和清空
删除字典元素
dic1={'name':'wj','age':'18'}
del dic1['age']
print(dic1) # {'name': 'wj'}
删除整个字典
dic1={'name':'wj','age':'18'}
del dic1
print(dic1) # NameError: name 'dic1' is not defined
清空字典
dic1={'name':'wj','age':'18'}
dic1.clear()
print(dic1) # {}
5. 字典相关函数
5.1 dict.keys()
以列表返回字典中所有的键
dic1={'name':'wj','age':'18'}
print(dic1.keys()) # dict_keys(['name', 'age'])
5.2 dict.values()
以列表返回字典中所有的值
dic1={'name':'wj','age':'18'}
print(dic1.values()) # dict_values(['wj', '18'])
5.3 dict.items()
返回可遍历的(键,值)元组数组
dic1={'name':'wj','age':'18'}
print(dic1.items())
# dict_items([('name', 'wj'), ('age', '18')])
5.4 dict.get(key,default=None)
返回指定键的值,如果值不在字典中则返回默认值None(可修改)
dic1={'name':'wj','age':'18'}
print(dic1.get('age')) # 18
print(dic1.get('gender')) # None
5.5 dict.update(dict2)
将dict2的键值对更新到dict里
dict={'name':'wj','age':'18'}
dict2={'color':'white'}
dict.update(dict2)
print(dict)
# {'name': 'wj', 'age': '18', 'color': 'white'}
5.6 dict.fromkeys(seq,vals)
创建一个新字典,以序列 seq 中元素做字典的键,vals为字典所有键对应的初始值
seq=('python','java','SQL')
values=(11,12,13)
print(dict.fromkeys(seq,values))
# {'python': (11, 12, 13), 'java': (11, 12, 13), 'SQL': (11, 12, 13)}
5.7 dict.pop(key)
除字典给定键key及其对应的值,返回值为被删除的值
dic1={'name':'wj','age':'18'}
print(dic1.pop('name')) # wj
print(dic1) # {'age': '18'}
5.8 dict.popitem()
返回并删除字典中最后一对键和值
dic1={'name':'wj','age':'18'}
print(dic1.popitem()) # ('age', '18')
print(dic1) # {'name': 'wj'}
三、字典推导式
li=['red','yellow','green']
dic={li.index(i):i for i in li}
print(dic)
# {0: 'red', 1: 'yellow', 2: 'green'}
dic1 = {"0":0,"1":0,"2":2}
dic2 = {k:v for k,v in dic1.items()}
print(dic2)
# {'0': 0, '1': 0, '2': 2}