Python 学习笔记 基本数据类型内置方法之字典dict
基本数据类型:
| (无序)序列类型: | dict |
需要优先掌握的:
需要掌握的:
字典dict:
作用:存多个值,取值速度快。
定义:{}花括号内用逗号隔开多个key:value。
其中value可以使用任意类型,但key必须是不可变类型,且不可重复!
info = {'name': 'tony', 'age': 18, 'sex': 'male'} # 本质info=dict({....})
数据类型转换
取值造字典
方法1:
info = [['name', 'tony'],('age', 18),['sex', 'male']]
d = {}
for item in info: # 遍历成单个元素组
d[item[0]] = item[1] # {'name': 'tony', 'age': 18, 'sex': 'male'}
# 赋值给d 相当于 key=item[0]:value=item[1]
方法2:
info = [['name', 'tony'],('age', 18),['sex', 'male']]
d = {}
for k, v in info: # 把info列表内的嵌套的元素,解压赋值给k ,v
d[k] = v # {'name': 'tony', 'age': 18, 'sex': 'male'}
方法3:
info = [['name', 'tony'],('age', 18),['sex', 'male']]
d = dict(info) # {'name': 'tony', 'age': 18, 'sex': 'male'}
方式4:快速初始化一个字典
keys = ['name','age','sex','gender']
d = {}.fromkeys(keys, None) # {'name': None, 'age': None, 'sex': None, 'gender': None} 快速初始所有value=None的字典
总结:
可以用以下方式造字典
dict(x=1,y=2,z=3) # {'x':1, 'y':2, 'z':3}
dict([('k1',1),('k2',2),('k3',3)]) # {'k1':1, 'k2':2, 'k3':3}
{}.fromkeys(['k1','k2','k3'],None) # {'k1':None, 'k2':None, 'k3':None}
优先掌握的操作:
字典可以对不存在的key新增新值
1、按key存取值:可存可取
(代码隐藏)点击查看代码
d = {'k1': 111}
# 针对赋值操作:key存在,则修改
d['k1'] = 222 # {'k1': 222}
# 针对赋值操作:key不存在,则创建新值
d['k2'] = 333 # {'k1': 111, 'k2': 333}
2、长度len
(代码隐藏)点击查看代码
print(len({'k1': 111, 'k2': 222,'k3': 333,'k1': 444,'k1': 555}))
# 结果为 3,key必须是不可变类型,且不可重复!同样的key ,取最末端的值!
# 字典的形态为 {'k1': 555, 'k2': 222,'k3': 333}
3、成员运算in和not in :把key作为判断依据
(代码隐藏)点击查看代码
d = {'k1': 111, 'k2': 222}
print('k1' in d) # True
print(111 in d) # False
4、删除:删除key等于删除value
(代码隐藏)点击查看代码
d = {'k1': 111, 'k2': 222}
# 通用删除
del d['k1'] # {'k2': 222}
# pop删除:根据key删除元素,返回删除key对应的那个value
res = d.pop('k2') # 结果: 222
# popitem删除:随机删除,返回元组(删除的key,删除的calue)
res = d.popitem() #结果: ('k2', 222)
5、键keys(),值values(),键、值对items()
(代码隐藏)点击查看代码
d = {'k1': 111, 'k2': 222}
print(d.keys()) # dict_keys(['k1', 'k2'])
print(d.values()) # dict_values([111, 222])
print(d.items()) # dict_items([('k1', 111), ('k2', 222)])
6、for循环
(代码隐藏)点击查看代码
d = {'k1': 111, 'k2': 222}
# 遍历字典取出字典key 为单个元素
for k in d:
print(k)
# 输出结果:
# k1
# k2
# 遍历字典取出value为单个元素
for v in d.values():
print(v)
# 输出结果:
# 111
# 222
# 遍历字典键值为单个元组
for item in d.items():
print(item)
# 输出结果:
# ('k1', 111)
# ('k2', 222)
# 遍历字典同时打印键值
for k,v in d.items():
print(k,v)
# 输出结果:
# k1 111
# k2 222
# 遍历字典为列表
print(list(d.keys())) # ['k1', 'k2'] 键列表
print(list(d.values())) # [111, 222] 值列表
print(list(d.items())) # [('k1', 111), ('k2', 222)] 元组列表
需要掌握的内置方法:
# 按照d['k2']的方式取值,可以不存在,程序会报错。
# .get()容错性好,返回值为None,或设置的固定返回内容
dic = {'k1': 111} # 字典
dic.get('k2') # None
dic.get('k2',值不存在!) # 值不存在!
dic = {'k1': 111} # 字典
dic.update({'k2': 222, 'k3': 333}) # {'k1':111, 'k2':222, 'k3':333}
dic.update({'k1':1112, 'k2': 222, 'k3': 333}) # {'k1':1112, 'k2':222, 'k3':333}
# 如果key不存在 则更新字典,返回key对应的value:
# 如果key存在,则不做改动,返回key对应的value:
dic = {'k1': 111}
res = dic.setdefault('k2', 222) # dic = {'k1': 111, 'k2': 222} 如果k2不存在 则更新字典。
print(res) # 222 返回k2对应的值
res = dic.setdefault('k1', 1112) # dic = {'k1': 111} 如果k1存在 则不做改动
print(res) # 111 返回k1对应的值
# dic = {'k1': 111} # 字典
# dic.clear() # {}

浙公网安备 33010602011771号