数据类型----字典的内置方法
目录
一、定义
'''
大括号括起来,内部存放多个元素,元素之间逗号隔开,K:V键值对的形式
k: 是对V的描述性信息,一般是字符串类型和不可变类型(整数,字符串)
V: 才是真正的数据值,其实就是变量值,可以是任意的数据类型
'''
# 定义:
dic = {'username':'kevin', 'age':18, 'sex': 'male'}
info = dict(name='tony', age=18, sex='male')
二、类型转换
# 转换1:
# 最中间是列表也可以,是元组也可以,只要是容器类型即可
info = dict([['name', 'tony'], ('age', 18)])
print(info) # {'name': 'tony', 'age': 18}
info = dict([['name', 'tony'], ['age', 18]])
print(info) # {'name': 'tony', 'age': 18}
# 转换2:fromkeys
# fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
info1 = {}
aa = info1.fromkeys(('name', 'age', 'sex'), None)
print(aa) # {'name': None, 'age': None, 'sex': None}
三、使用
3.1 优先掌握的操作
3.1.1 按key取值
# 1.按key存取值:可存可取
dic = {
'name': 'xxx',
'age': 18,
'hobbies': ['play game', 'basketball']
}
# 1.1 取
print(dic['name']) # xxx
print(dic['age']) # 18
print(dic['hobbies']) # ['play game', 'basketball']
3.1.2 按key改值
# 2 改值
# 2.1 如果key存在,代码修改值
dic['name'] = 'kevinNb'
print(dic)
# 返回{'name': 'kevinNb', 'age': 18, 'hobbies': ['play game', 'basketball']}
# 2.2如果key不存在,代表增加值,会增加到字典末尾
dic['pwd'] = 123
print(dic)
# 返回{'name': 'kevinNb', 'age': 18, 'hobbies': ['play game', 'basketball'], 'pwd': 123}
# 2.3 还可以更改字典内的列表
dic['hobbies'][1] = 'football'
print(dic)
# 返回{'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'football']}
3.1.3 长度len
# 3.长度len
print(len(dic)) # 3
3.1.4 成员运算 in 和 not in
# 4. 判断某个值是否是字典的key
print('name' in dic) # True
print('name1' in dic) # False
3.1.5 三兄弟:键keys(),值values(),键值对items()
# 5.键keys(),值values(),键值对items()
# 5.1 获取字典所有的key
data1 = dic.keys()
print(data1) # dict_keys(['name', 'age', 'hobbies'])
# 可以将结果就当成是一个列表
for i in data1:
print(i)
# 5.2 获取字典所有的value
data2 = dic.values()
print(data2) # dict_values(['xxx', 18, ['play game', 'basketball']])
for i in data2:
print(i)
# 5.3 获取字典所有的键值对
data3 = dic.items()
print(data3) # dict_items([('name', 'xxx'), ('age', 18), ('hobbies', ['play game', 'basketball'])])
3.1.6 循环
# 6.1 默认遍历的是字典的key
for key in dic:
print(key)
# 6.2 只遍历key
for key in dic.keys():
print(key)
# 6.3 只遍历value
for key in dic.values():
print(key)
# 6.4 遍历键值对
# 6.4.1 先获取键值对,索引键值对列表
for i in dic.items():
print(i[0], i[1])
# 6.4.2 k,v解压赋值
for k, v in dic.items():
print(k, v)
# 6.4.3 索引dict[key]
for i in dic:
print(i, dic[i])
3.2 增删改查涉及的操作
3.2.1 get()取值
# 1.get()
# 按照key取值时,如果字典中没有改变量就会报错
# print(dic['name1']) # KeyError
# 1.1 key存在,则获取key对应的value值
print(dic.get('name')) # xxx
# 1.2 key不存在,不报错,返回None
print(dic.get('name1')) # None
# 1.3 get的第二个参数,取值的时候,如果key存在,则就取出原来的值,key如果不存在,就取出第二个参数的值,并不会改变原来的字典
print(dic.get('name', 666)) # xxx
print(dic.get('name1', 666)) # 666
print(dic)
3.2.2 del
pop():删除指定的key对应的键值对,并返回value
popitem():随机删除一组键值对,并将删除的键值对放到元组内返回
# 2 del:通过指定字典的key来删除字典的键值对
del dic['name']
print(dic)
# 返回:{'age': 18, 'hobbies': ['play game', 'basketball']}
3.2.3 pop()
# 3.pop():删除指定的key对应的键值对,并返回值
a1 = dic.pop('name')
print(a1) # xxx
print(dic)
# 返回:{'age': 18, 'hobbies': ['play game', 'basketball']}
3.2.4 popitem()
# 4.popitem():随机删除一组键值对,并将删除的键值对放到元组内返回
dic = {'k1': 'jason', 'k2': 'Tony', 'k3': 'JY'}
print(dic.popitem()) # ('k3', 'JY')
print(dic)
# 返回:{'k1': 'jason', 'k2': 'Tony'}
3.2.5 update()
# 5.update():用新字典更新旧字典,有则修改,无则添加
dic.update({'name': 'kevin', 'pwd': 123})
print(dic)
# 返回:{'name': 'kevin', 'age': 18, 'hobbies': ['play game', 'basketball'], 'pwd': 123}
3.3 需要了解的操作
3.3.1 fromkeys()
# fromkeys()
dic1 = dict.fromkeys(['k1', 'k2', 'k3'], [])
print(dic1)
# 返回:{'k1': [], 'k2': [], 'k3': []}
dic2 = dict.fromkeys(['k1', 'k2', 'k3'], [111])
print(dic2)
# 返回:{'k1': [111], 'k2': [111], 'k3': [111]}
dic3 = dict.fromkeys(['k1', 'k2', 'k3'], [111, 222])
print(dic3)
# 返回:{'k1': [111, 222], 'k2': [111, 222], 'k3': [111, 222]}
dic4 = dict.fromkeys(['k1', 'k2', 'k3'], [111, 222, 333])
print(dic4)
# 返回:{'k1': [111, 222, 333], 'k2': [111, 222, 333], 'k3': [111, 222, 333]}
'''就是做初始化操作'''
# 初始化想要赋予不同的值
# 1.先都赋予空列表
dic = dict.fromkeys(['k1', 'k2', 'k3'], []) #{'k1': [], 'k2': [], 'k3': []}
# 用按key赋值的方式给不同的k赋不同的值
dic['k1'] = [11, 22, 33]
dic['k2'] = [111, 777]
dic['k3'] = ['kevin', 'tom']
print(dic)
# 返回:{'k1': [11, 22, 33], 'k2': [111, 777], 'k3': ['kevin', 'tom']}
3.3.2 setdefault()
# 2.setdefault()
dic = {
'name': 'xxx',
'age': 18,
'hobbies': ['play game', 'basketball']
}
# 2.1 key不存在则新增键值对,并将新增的value返回给字典
a = dic.setdefault('name1', 666)
print(a) # 666
# 字典中新增了键值对
print(dic)
# 返回:{'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball'], 'name1': 666}
# 2.2 key存在则不做任何修改,并返回已存在key对应的value值
a = dic.setdefault('name', 666)
print(a) # xxx
# 字典不变
print(dic)
# 返回:{'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball'], 'name1': 666}
3.4 易混淆知识点
3.4.1 取值
# 1.索引
d['username'] # key不存在直接报错
# 2.get
d.get(key) #key存在,返回对应value值
d.get(key1) # key不存在也不报错,返回None
d.get(key,666) #key存在,取出原值
d.get(key1, 666) # key不存在返回的结果,不改变字典
3.4.2 修改
# 1.索引
d[key] = '值' # key存在,则是修改
d[key] = '值' # key不存在,则是添加到末尾
# 2.update
d.update({'username':'jack','age':20}) # key存在就是修改,不存在就是添加
#3.setdefault()
setdefault('name', 666) # key存在直接返回key对应的值,不存在,就添加
3.4.3 删除
# 1.del
del dic[key] #使用key删除
# 2.pop()
pop(key) # 使用key删除,并返回value值
#3.popitem()
popitem() # 删除的是最后一对,删除的键值对放到元组内返回