数据类型----字典的内置方法

一、定义

'''
	大括号括起来,内部存放多个元素,元素之间逗号隔开,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()  # 删除的是最后一对,删除的键值对放到元组内返回

posted @ 2023-02-21 19:18  星空看海  阅读(19)  评论(0编辑  收藏  举报