字典类型的内置方法,

# 字典内置方法
# 字典为可变类型
# 大括号括起来内部可以存放多个元素,
# 元素的表现形式是以key:value的形式
# key是对value的描述性信息,一般都是字符串
# key是不可变类型。value可以是任意类型。
d1 = {'username': 'jason',
'passwore': 123,
'hobby': ['read', 'run']}
# print(d1, type(d1)) # <class 'dict'>
# 即然key是不可变类型,那么key是否可以是整型,浮点型呢?
d2 = {1: 'jason', 2: 123, 3: ['read', 'run']}
print(d2, type(d2))
# 得到{1: 'jason', 2: 123, 3: ['read', 'run']} <class 'dict'>
# 很明显整型可以
d3 = {1.1: 'jason', 2.2: 123, 3.3: ['read', 'run']}
print(d3, type(d3))
# 得到{1.1: 'jason', 2.2: 123, 3.3: ['read', 'run']} <class 'dict'>
# 很明显浮点型也可以
# 所以key值只要是不可变类型即可。

# 各种数据类型有哪些可以转成字典型
# l1 = 18
# print(dict(l1))
# l2 = 11.11
# print(dict(l2))
# l3 = '123'
# print(dict(l3))
# l4 = [1, 2, 3, 4]
# print(dict(l4))

# 按key存取值:可存可取
d1 = {'username': 'jason', 'password': 123, 'hobby': ['read', 'run']}
print(d1['username']) # jason 取
d1['username'] = 'tony'
print(d1) # 存个'tony
# 得到{'username': 'tony', 'password': 123, 'hobby': ['read', 'run']}

print(d1['age']) # 用中括号取值的时候,如果键不存在直接报错
d1['age'] = 18 # 键如果存在就修改,不存在就新建
print(d1)


# 长度len 统计字典中键值对的个数
print(len(d1)) # 3

# 3成员运算in和not in
print('jason' in d1) # False 字典默认只暴露key值,如果想取value
print('username' in d1) # True 由此可以总结一句话:key在字典里,value可以取。
# 只能通过key值


# 4字典的删除操作
del d1['password']
print(d1) # 删除的是键值对,key和value要删除一起删除不会留其中一个
d1.pop() # 列表中这个直接尾部弹出,但是字典里面这个会直接报错,
# 所以字典需要在括号里面填东西.
d1.pop(0)
print(d1) # 报错 字典也不可以用索引
res = d1.pop('password')
print(d1) # {'username': 'jason', 'hobby': ['read', 'run']}
print(res) # 123 说明弹出的是value,
# 删除的是key 看你用不用,不用就帮你删了

# 5.键keys() 值values() 键值对items()
print(d1.keys()) # dict_keys(['username', 'password', 'hobby'])
# 将keys的结果可以直接看成是列表
# 证明如下
for j in d1.keys():
print(j)
# 得到的结果是
# username
# password
# hobby

print(d1.values()) # dict_values(['jason', 123, ['read', 'run']])
# 将values的结果也可以直接看成是列表.

print(d1.items()) # dict_items([('username', 'jason'),
# ('password', 123), ('hobby', ['read', 'run'])])
# 将items的结果看成元组
for k, v in d1.items(): # 解压赋值
print(k, v)
# username jason
# password 123
# hobby ['read', 'run']


# keys在python2和python3的对比.
# python2中的d1.keys得到的结果直接就是列表
# 而python3中得到的是 dict_keys(['username', 'password', 'hobby'])

# 6.循环
# 字典for循环只能取到key
d1 = {'username': 'jason', 'password': 123, 'hobby': ['read', 'run']}
for i in d1:
print(i)
# username
# password
# hobby
# dict.get()
# 通过字典的key获取value
print(d1.get('username')) # jason
print(d1['username']) # jason
print(d1.get('age')) # get方法键不存在也不会报错 返回的是None
# 所以以后字典取值多用这种方法不会报错。
print(d1.get('username', '黑河二')) # jason
print(d1.get('age', '黑河二')) # 黑河二
#get方法还可以给第二个参数 键存在则直接给他所对应的value
# 键不存在则返回第二个参数,不写第二个参数也就是默认返回None.

# 1.第一种创建字典的方式
d2 = {'k1': 'v1', 'k2': 'v2'} # dict{'k1': 'v1', 'k2': 'v2'}
# 2.第二种创建字典的方式
res = dict(name='jason',pwd=123,hobby=['read','run'])
print(res) # {'name': 'jason', 'pwd': 123, 'hobby': ['read', 'run']}
# 3.1第三种创建字典的方法
l = [['username', 'jason'],
['password', 123],
['hobby', ['read', 'run']]]
d = {} # 首先令d = {}
for i in l:
print(i)
d[i[0]] = i[1]
print(d)
# print(i)之后,得到这几个列表
# ['username', 'jason']
# ['password', 123]
# ['hobby', ['read', 'run']]
# 然后d[i[0]] = i[1] # 键存在就修改,键不存在就新建,很明显d刚开始是空字典所以新建
# d1 = {'username': 'jason'}
# d2 = {'username': 'jason', 'password':123}
# d3 = {'username': 'jason', 'password': 123,'hobby': ['read', 'run']}
# 3.2创建字典方法
d = {} # 令d = {}
for k, v in l:
d[k] = v
print(d)
# 得到{'username': 'jason', 'password': 123, 'hobby': ['read', 'run']}
# 3.3创建字典的方法
res = dict(l)
print(res)


# dict.clear() # 清空


# res = dict.fromkeys()
# 快速生成一个字典
l = ['username', 'pwd', 'hobby']
res = dict.fromkeys(l, 123)
print(res)
# 得到{'username': 123, 'pwd': 123, 'hobby': 123}

# dict.popitem()
# 随机弹出一组键值对,一般默认弹出最一组。
d = {'username': 123, 'pwd': 123, 'hobby': 123}
d.popitem() # 随机弹出一组键值对,
print(d)
# 得到{'username': 123, 'pwd': 123}

# dict.setdefault()
# 特别注意键存在不修改这部分,他跟另一个不同。
dd = {'name': 'jason', 'pwd': 123}
dd.setdefault('age', 18) # 键不存在就新建
res = dd.setdefault('name', 'egonsbsbsb') # 键存在不修改,而是获取到键对应的值
print(dd) # {'name': 'jason', 'pwd': 123, 'age': 18}
print(res) # jason

# dict.update()
dd = {'name': 'jason', 'pwd': 123}
l = dd.update({'age': 18}) # 键不存在则新建一个
res = dd.update({'name': 'egonsbsbsb'}) #键存在则修改
print(dd) # {'name': 'egonsbsbsb', 'pwd': 123, 'age': 18}
print(res) # None
print(l) # None


# 也可以用这种方法
dd['age'] = 18
print(dd) # {'name': 'jason', 'pwd': 123, 'age': 18}
dd['name'] = 'egon'
print(dd) # {'name': 'egon', 'pwd': 123}
上一篇:python基础课程讲解07.之基本数据类型2


下一篇:字典的内置方法