1. 字典的创建
# 1. 字典的创建
# key-value 或者 键值对
d = {'name':'westos', 'age':'21', 'address':'西安'}
print(d, type(d)) # {'name': 'westos', 'age': '21', 'address': '西安'} <class 'dict'>
d = {}
print(d, type(d)) # {} <class 'dict'>
2. 字典的特性
# 2. 字典的特性
# 不支持 + * index slice (因为字典是无序且不重复的)
# 支持 in 和 not in 成员操作符
# 注意:in 和 not in只能判断key值
d = {'name':'westos', 'age':'21', 'address':'西安'}
print('name' in d) # True, 判断是否所有的key的成员
print('westos' in d) # False
3. 字典的内置方法
3.1 查看元素
# 3. 字典的内置方法
# 3-1) 查看
d = {'name':'westos', 'age':21, 'address':'西安'}
print(d.keys()) # 查看字典所有的key,dict_keys(['name', 'age', 'address'])
print(d.values()) # 查看字典所有的value,dict_values(['westos', 21, '西安'])
print(d.items()) # 查看字典所有的key-value值(item元素),dict_items([('name', 'westos'), ('age', 21), ('address', '西安')])
print(d['name']) # 查看key为name对应的value值,westos
# print(d['sex']) # 如果查看的key不存在,那么会报错,KeyError: 'sex'
print(d.get('sex')) # 如果查看的key不存在,那么会返回 None
print(d.get('sex', 'gril')) # 如果查看的key不存在,那么会返回默认值 gril
d = {'name':'westos', 'age':21, 'address':'西安', 'sex':'boy'}
print(d.get('sex', 'gril')) # boy, 如果查看的key存在,则返回对应的value值;如果不存在,返回默认值
3.2 增加元素
# 3-2) 增加
d = {'name':'westos', 'age':21}
d['address'] = '西安'
print(d) # {'name': 'westos', 'age': 21, 'address': '西安'}
d['address'] = '成都' # key存在,则修改value值
print(d) # {'name': 'westos', 'age': 21, 'address': '成都'}
d = {'name':'westos', 'age':21}
d.setdefault('address', '西安') # key不存在,就添加
print(d) # {'name': 'westos', 'age': 21, 'address': '西安'}
d.setdefault('address', '成都') # key存在,则不做任何操作
print(d) # {'name': 'westos', 'age': 21, 'address': '西安'}
3.3 删除元素
# 3-3) 删除
#
d = {'name':'westos', 'age':21}
d.pop('name')
print(d) # {'age': 21}
d = {'name':'westos', 'age':21}
del d['name']
print(d) # {'age': 21}
4. 遍历字典
# 特别重要:
d = {'name':'westos', 'age':21, 'address':'西安'}
# 如何遍历字典的key和value呢?
for item in d.items():
print(item)
# ('name', 'westos')
# ('age', 21)
# ('address', '西安')
d = {'name':'westos', 'age':21, 'address':'西安'}
for key,value in d.items():
print(f'key={key}, value={value}')
# key=name, value=westos
# key=age, value=21
# key=address, value=西安
5. 扩展:默认字典
# 默认字典
from collections import defaultdict
# 默认字典:设置默认value
# int 整型数据
d = defaultdict(int)
print(d) # defaultdict(<class 'int'>, {})
print(d['apple']) # 0 默认字典给所有的key设置value
print(d) # defaultdict(<class 'int'>, {'apple': 0})
d['banana'] += 1
d['orange'] += 1
d['pear'] = 4
print(d) # defaultdict(<class 'int'>, {'apple': 0, 'banana': 1, 'orange': 1, 'pear': 4})
# list 列表型数据
d = defaultdict(list)
d['allow_users'].append('westos')
d['deny_users'].extend(['user1','user2'])
print(d) # defaultdict(<class 'list'>, {'allow_users': ['westos'], 'deny_users': ['user1', 'user2']})
# set 集合型数据
d = defaultdict(set)
d['love_movies'].add('肖申克的救赎') # 不需要 {}
d['deny_movies'].update('混沌行走')
print(d) # defaultdict(<class 'set'>, {'love_movies': {'肖申克的救赎'}, 'deny_movies': {'走', '混', '行', '沌'}})
d = defaultdict(set)
d['deny_movies'].update({'混沌行走'}) # 需要{}
print(d) # defaultdict(<class 'set'>, {'deny_movies': {'混沌行走'}})