# -*- coding: utf-8 -*- __author__ = '木之易' __date__ = '2018/7/23 20:10' # 字典 容器类,可以用来存放数据,是以key:value的形式进行存储的,并且key在字典中具有唯一性,字典中存储的数据是无序的,字典中的增删改查操作都可以通过key完成 # key必须是不可变类型的,字符串、数字、元组都是不可变的,推荐使用字符串 # 1.字典添加数据,如果字典中没有这个key,就添加这个key和值 # 2.字典修改数据,如果字典中有这个key,修改这个key对应的值 # 3.字典删除数据 # 3.1 根据key删除数据 del dict1['age'] # KeyError: 'xxx' 删除的时候,如果出现类似错误,是因为字典没有个key # 3.2 使用pop(key) 移出字典对应key的值 age = dict1.pop('age') # 3.3 使用popitem() 移出字典中的某个key,value 返回一个元组(不可变列表) # 3.4 使用clear()函数 将字典中所有的元素清除 dict1.clear() # 4.查询字典中数据 # 4.1 根据key取出字典中对应的值 若key不存在,会触发KeyError: 'xxx'异常错误 # 4.2 get()函数 根据key取字典中的值,若key不存在,不会触发异常,返回一个默认的None值 # 可以指定当key不存在时,返回一个指定的值 result = dict1.get('qwer', '指定的值') # 4.3 获取字典中所有的key和value # for循环直接遍历字典,遍历得到的是字典中key 根据key取出字典中的值 dict1 = {'name': '张三', 'age': 22} for key in dict1: value = dict1[key] print('key:%s value:%s' % (key, value)) >>>key:name value:张三 >>>key:age value:22 # 4.4 遍历字典.items() for item in dict1.items(): # item ('name', '李四')是一个包含了key和value的元组 print('key:%s value:%s' % (item[0], item[1])) >>>key:name value:张三 >>>key:age value:22 # keys()获取字典中所有的key 返回一个列表 keys = dict1.keys() for key in keys: print(key) >>>name >>>age # values()获取字典中所有的value 返回一个列表 values = dict1.values() for value in values: print(value) >>>张三 >>>22 # --------------------字典 dict # clear() 移除字典中所有数据 # copy() 拷贝字典 # fromkeys() # get() 根据key取出值,若key不存在,返回默认值 # items() 获取字典中所有的key,value,返回[(key,value),] # keys() 获取字典所有的key # pop() 根据key移出值 # popitem() 移出字典中某个key和值,返回(key,value) # setdefault() # update() # values() 获取字典所有的value # 1.fromkeys() 根据一些key,添加到字典中,并返回一个新的字典,若不指定值,默认为None # 1.1 存放key的可迭代对象 # 1.2 key对应的值,指定的值 keys = ['phone', 'sex'] dict1 = dict1.fromkeys(keys, 110) print(dict1) >>>{'phone': 110, 'sex': 110} # 2.setdefault() # 2.1 要设置值的key # 2.2 指定的默认值,若不指定,默认为None # 等同于 dict1['name'] = '张三' dict1.setdefault('name', '张三') print(dict1) >>>{'phone': 110, 'sex': 110, 'name': '张三'} # 3.update() 若A中有B中的key,将数据更新为B中key对应的值,若没有则添加 dict2 = {'age': 22, 'phone': 120} dict1.update(dict2) print(dict1) >>>{'phone': 120, 'sex': 110, 'name': '张三', 'age': 22}