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)] 元组列表

需要掌握的内置方法:

1、按Key取值 .get()

# 按照d['k2']的方式取值,可以不存在,程序会报错。
# .get()容错性好,返回值为None,或设置的固定返回内容
dic = {'k1': 111}  # 字典
dic.get('k2')  # None
dic.get('k2',值不存在!) # 值不存在!

2、更新字典 .update()

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}

3、按key更新字典 .setdefault()

# 如果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对应的值

4、清空字典 .clear()

# dic = {'k1': 111}  # 字典
# dic.clear()  # {}
posted @ 2021-09-02 22:35  Euge  阅读(128)  评论(0)    收藏  举报