一、创建字典的方式

  1、基本方式:

a = {'name':'tom','age':18}

  2、在空字典中填入元素:

a = {}  # 创建空列表
print(dict(name='tom', age=18))  # 结果为 {'name': 'tom', 'age': 18}

  3、快速初始化一个字典fromkeys:

x = ['name', 'age']  # 此处还可以为字符串,元组等for循环可遍历的类型
a = {}.fromkeys(x, None)  # 将遍历到的值作为key,对应的value都为None
print(a)  # 结果为 {'name': None, 'age': None}

  4、类型转换:适用对象为元组或者列表。

info = [
    ['name', 'tom'],
    ('age', 18)
]  # 列表或元组中的元素必须为包含元素个数为2的子列表或子元组
a = dict(info)  # 将子列表或资源组的两个元组分别作为key与value组成字典
print(a)  # 结果为 {'name': 'tom', 'age': 18}

二、内置功能

  1、按key存取值:

info = {'name': 'tom', 'age': 18}
print(info['name'])  # 按key取value,结果为 tom
info['age'] = 20  # key存在,修改对应的value
print(info)  # 结果为 {'name': 'tom', 'age': 20}
info['gender'] = 'male'  # key不存在,能添加为新元素
print(info)  # 结果为 {'name': 'tom', 'age': 20, 'gender': 'male'}

  2、长度:统计元素个数。

info = {'name': 'tom', 'age': 18}
print(len(info))  # 结果为 2

  3、成员运算in和not in:根据key。

info = {'name': 'tom', 'age': 18}
print('name' in info)  # 结果为 True
print('age' not in info)  # 结果为 False

  4、删除相关:

    ①通用删除del:

info = {'name': 'tom', 'age': 18}
del info['age']
print(info)  # 结果为 {'name': 'tom'}

    ②移出pop:根据key锁定对应元素,移出该元素,只返回该元素的value。

info = {'name': 'tom', 'age': 18}
print(info.pop('name'))  # 结果为 tom
print(info)  # 结果为 {'age': 18}

    ③随机移出popitem:随机锁定某一元素,把其key和value组合为元组返回。

info = {'name': 'tom', 'age': 18}
print(info.popitem())  # 结果为 ('age', 18)
print(info)  # 结果为 {'name': 'tom'}

    ④清除clear:清除字典内所有元素,结果为一个空字典,无返回值。

info = {'name': 'tom', 'age': 18}
info.clear()
print(info)  # 结果为{}

  5、提取keys,values,items:在python2中会分别以keys,values,键值对items为元素生成列表,在python3中只是生成一个带指向功能占很小空间的中间量,一般与for循环搭配。

info = {'name': 'tom', 'age': 18}
print(info.keys())  # 结果相当于有个可以指向 ['name', 'age']的量
print(info.values())  # 结果相当于有个可以指向 ['tom', 18]的量
print(info.items())  # 结果相当于有个可以指向[('name', 'tom'), ('age', 18)]的量
for a in info.items():
    print(a)  # 结果为两次:('name', 'tom')   ('age', 18)

  6、更新updata:把新字典的元素拷贝填入老字典,key不同的元素共存于老字典,key相同的元素的value取新字典的value,此操作对新字典没有影响。

info = {'name': 'tom', 'age': 18}  # 老字典独有'name': 'tom'
info_new = {'age': 20, 'gender': 'male'}  # 新字典独有'gender':'male'
info.update(info_new)  # 两者共有key('age'),取新字典的对应value(20)
print(info)  # 结果为 {'name': 'tom', 'age': 20, 'gender': 'male'}
print(info_new)  # 新字典无影响,结果为 {'age': 20, 'gender': 'male'}

  7、寻值get:检索字典,若存在get声明的key,返回对应的value,不存在该key,返回None,比起直接取值,不会因为key不存在而导致程序崩溃,容错性好。

info = {'name': 'tom', 'age': 18}
print(info.get('name'))  # 结果为tom
print(info.get('gender'))  # 不存在的key,结果为None
print(info('gender'))  # 直接取值时按照不存在的key,直接报错

  8、替补setdefault:声明一个键值对,若目标字典中不存在该键值对的key,则将该键值对填入字典,并返回该键值对的value。若存在该键值对的key,则不进行任何操作,并返回字典中该key的value。

info = {'name': 'tom', 'age': 18}
print(info.setdefault('gender', 'male'))  # 没有key('gender'),填入该键值对,返回该value,结果为 male
print(info)  # 结果为 {'name': 'tom', 'age': 18, 'gender': 'male'}
print(info.setdefault('age', 20))  # 有key('age'),不做任何操作,返回字典中对应的value,结果为 18
print(info)  # 结果为 {'name': 'tom', 'age': 18, 'gender': 'male'}

 

posted on 2020-01-02 16:01  焚音留香  阅读(233)  评论(0编辑  收藏  举报