字典
-
字典是列表以外Python中使用最灵活的内置数据类型。
-
字典是一种可变的数据类型。
-
和列表的区别:
-
列表有序而字典是无序的
-
列表通过索引(偏移)访问元素,字典通过键(key)访问元素
-
1.字典的基本格式
- dic = {key1 : value1, key2 : value2, … ,keyn : valuen}
- 值可以任意数据类型,但键不可以,必须为不可变数据类型。即key必须可哈希。
- 可哈希—>不可变 不可哈希—>可变
特点:
- 1.key:value,键值对之间用冒号(:)连接
- 2.key:value,组成字典的一个元素
- 3.键值对之间用逗号隔开
- 4.字典用花括号({})包括
2.字典的创建
# 空字典的创建
dic = {}
print(dic)
# <class 'dict'>
# 创建多元素字典
info = {"name":"Tom","age":18}
#key:value ---->键值对
print(info, len(info))
#{'name': 'Tom', 'age': 18} 2
3.强转
dic = dict(id = 20190101, name = 'Tom', age = 18)
print(dic)
# {'id': 20190101, 'name': 'Tom', 'age': 18}
#zip()
key = ('id','name','age')
value = (20190101,'Tom','18')
tp = dict(zip(key,value))
print(tp, type(tp))
#{'id': 20190101, 'name': 'Tom', 'age': '18'} <class 'dict'>
tp = dict(list(zip(key,value)))
print(tp, type(tp))
#{'id': 20190101, 'name': 'Tom', 'age': '18'} <class 'dict'>
#要强转需要把所有的key:value包括起来转化成字典
通过字典的fromkeys方法创建字典
格式:
dict.fromkeys(seq, val=Nune)
-
创建并返回一个字典
-
以seq中的元素作为该字典的键
-
val的值作为该字典中所有键对应的初始值,若不提供,默认为None
dic = dict.fromkeys('Hello') print(dic) #{'H': None, 'e': None, 'l': None, 'o': None} dic = dict.fromkeys(['a','b','c'],12345) print(dic) #{'a': 12345, 'b': 12345, 'c': 12345}
-
4.字典的常见操作
(1)增
- 直接添加键值对(dic[key] = value)
- 通过使用变量名[‘键’] = ‘值’,如果key不存在,新键值对(key:value;如果存在,则更新值(value)
dic = {}
print(dic)
# {}
dic['name'] = 'Tom'
print(dic)
#{'name': 'Tom'} 不存在则增加
dic['name'] = 'Alice'
print(dic)
# {'name': 'Alice'} 若存在则更改
- dict.update(dic)
- 把字典dic中的键值对(key:value)更新到dict中。
-
两个字典的键完全不同,则将dic的键值对全部添加至dict中
-
存在相同的键,则更新dict中对应的值
-
dic = {'job': 'IT', 'hobby': 'Read'}
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
dic1.update(dic)
print(dic1)
# {'id': 20190101, 'name': 'Tom', 'age': 22, 'job': 'IT', 'hobby': 'Read'}
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
dic2 = {'name':'Jack','hobby':'Read'}
dic1.update(dic2)
print(dic1)
# {'id': 20190101, 'name': 'Jack', 'age': 22, 'hobby': 'Read'}
(2)删
-
dict.pop
-
格式:dict.pop(key[,default])
如果key存在于dict中,删除并返回dict[key];如若不存在,给出默认值则返回默认值,未给出默认值报错
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1.pop('age')) # 22 print(dict1) # {'id': 20190101, 'name': 'Tom'} dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22} print(dict.pop('job',22)) #IT print(dict) #{'id': 20190101, 'name': 'Tom', 'age': 22}
-
-
dict.popitem()
-
随机删除一对键值对
-
有返回值,元组
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1) # {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1.popitem()) # ('age', 22) print(dic1) # {'id': 20190101, 'name': 'Tom'}
-
-
del
-
del dict 删除字典,没有返回值
-
del dict[]
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1) #{'id': 20190101, 'name': 'Tom', 'age': 22} del dic1['id'] print(dic1) #{'name': 'Tom', 'age': 22}
-
-
.clear()
- 清空字典,返回值{}
(3)改
- 直接修改
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
print(dic1)
# {'id': 20190101, 'name': 'Tom', 'age': 22}
dic1['id'] = 20190102
print(dic1)
# {'id': 20190102, 'name': 'Tom', 'age': 22}
-
dict.setdefault()
-
键存在,不改动,返回字典中的值
-
键不存在,在字典中添加相应的键值对,并返回相应的值
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1) # {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1.setdefault('name','jack')) # Tom print(dic1) # {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1.setdefault('hobby','IT')) # IT print(dic1) # {'id': 20190101, 'name': 'Tom', 'age': 22, 'hobby': 'IT'}
-
(4)查
-
字典值的访问
- 直接通过字典的key访问value
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1) print(dic1['id']) # 20190101
-
dict.get()访问value
- 语法格式 dict.get(key,default)
- 不确定字典中是否存在某个键而又想对其进行操作,比如获取值 ---->get方法
- 当key不存在的时候,不会抛出异常,返回None
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1) print(dic1.get('name')) # Tom print(dic1.get('hobby','IT')) # IT (但dic1并不存在)
-
遍历
- dict.keys()
- dict.values()
- dict.items
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22} print(dic1.keys(),end = ' ') # dict_keys(['id', 'name', 'age']) for key in dic1.keys(): print(key,end= ' ') # id name age print( dic1.values(),end= ' ') # dict_values([20190101, 'Tom', 22]) for values in dic1.values(): print(values,end= ' ') # 20190101 Tom 22 for key,value in dic1.items(): print(key,':',value) # id : 20190101 # name : Tom # age : 22