字典的特征:
key-value结构
key必须可hash,且必须为不可变数据类型、必须唯一。 # hash值都是数字,可以用类似于2分法(但比2分法厉害的多的方法)找。
可存放任意多个值、可修改、可以不唯一
无序
查找速度快
常用方法:
info = {'stu01': 'alex', 'stu02': 'jack', 'stu03': 'jucy'} # 关键字:info.keys(),值:info.values() print('stu01' in info) # True print(info['stu01']) # alex 没有会报错 print(info.get('stu01')) # alex 没有不会报错,而是返回None,一般用这个 print(info.pop('stu03')) # jucy 删除,返回删除的值 # info.popitem() 随机删 # del info['stu01'] 删除方法,全局删除 # copy和list的一模一样 # 可多嵌套 print(info.items()) # 把字典转成列表。dict_items([('stu01', 'alex'), ('stu02', 'jack')]) info2 = {1: 2, 'stu02': [22, 1893113111, '男']} info.update(info2) # 更新和list的extends类似,有对应的值就覆盖,没有对应的值就创建。 print(info) # {'stu01': 'alex', 'stu02': [22, 1893113111, '男'], 1: 2} info.setdefault(2, 'a') # 如果有2这个值就什么都不做,如果没有就把2的值写成'a' print(info) # {'stu01': 'alex', 'stu02': [22, 1893113111, '男'], 1: 2, 2: 'a'} seq = ('Google', 'Runoob', 'Taobao') dict = dict.fromkeys(seq) print("新字典为 : %s" % str(dict)) # 字典为 : {'Google': None, 'Runoob': None, 'Taobao': None} dict = dict.fromkeys(seq, 10) print("新字典为 : %s" % str(dict)) # 新字典为 : {'Google': 10, 'Runoob': 10, 'Taobao': 10} # 打印出key和value for k in info: print(k, info[k]) # 下面这个方法不建议用,低效,需要把字典转换成列表,而字典的查询速度特别快 for k, v in info.items(): print(k, v)