1 字典基础
1.1 字典是无序的对象的集合,通过键来存取,字典的键只能是不可变类型。
1.3 字典的长度可变,异构,任意嵌套。
1.2 python中不可变数据类型包括:数值类型,字符串和元组。
2 创建字典的四种方法
2.1如果你可以事先可以拼出整个字典:
1 dic = {'name': 'Bob', 'age': 40}
2.2 如果你需要动态的一次创建字典的一个字段:
1 dic = {} 2 dic['name'] = 'Bob' 3 dic['age'] = 20
2.3 如果你想书写简单,而且字典的键是字符串:
1 dic = dict(name='Bob', age=18) 2 print(dic)
2.4 如果你需要在程序运行时通过序列构建字典:
1 dic = dict([('name', 'Bob'), ('age', 18)]) 2 print(dic)
3 字典的基本操作
3.1 字典的基本操作之增
1 # 通过动态的赋值来为字典增加键值对 2 dic = {} 3 dic['name'] = 'Bob' 4 dic['age'] = 60 5 print(dic) # {'name': 'Bob', 'age': 60} 6 7 # 通过setdefault方法增加键值对 8 a = dic.setdefault('name', 'alex') # 当原字典中有'name',则不去修改,否则增加 9 b = dic.setdefault('age', 22) # 同上 10 c = dic.setdefault('sex', '男') # 同上 11 print(a, b, c) # Bob 60 男 12 print(dic) # {'name': 'Bob', 'age': 60, 'sex': '男'}
3.2 字典的基本操作之查
1 # 通过键来查看值 2 print(dic['name']) # Bob 3 print(dic['age']) # 60 4 print(dic['sex']) # 男 5 6 # 通过方法keys(),values(),items() 7 print(dic.keys()) # dict_keys(['name', 'age', 'sex']) 8 print(dic.values()) # dict_values(['Bob', 60, '男']) 9 print(dic.items()) # dict_items([('name', 'Bob'), ('age', 60), ('sex', '男')])
3.3 字典的基本操作之改
1 dic = {'name': 'Bob', 'age': 60, 'sex': '男'} 2 # 通过赋值方式来修改 3 dic['name'] = 'alex' 4 print(dic) # {'name': 'alex', 'age': 60, 'sex': '男'} 5 6 # 通过方法update()来修改 7 dic2 = {'sex': '女', 'hobby': 'learn', 'country': 'China'} 8 dic.update(dic2) # 原来不存在的键值对追加,存在的键修改其值 9 print(dic) # {'name': 'alex', 'age': 60, 'sex': '女', 'hobby': 'learn', 'country': 'China'}
3.3 字典的基本操作之删
1 dic = {'name': 'Bob', 'age': 60, 'sex': '男'} 2 # 通过del删除字典中的元素或整个字典 3 del dic['name'] 4 print(dic) # {'age': 60, 'sex': '男'} 5 del dic 6 # print(dic) # NameError: name 'dic' is not defined 7 8 dic = {'name': 'Bob', 'age': 60, 'sex': '男'} 9 # 通过pop()方法 10 name = dic.pop('name') 11 print(name) # Bob 12 print(dic) # {'age': 60, 'sex': '男'}
4 字典中其他内置方法
4.1 fromkeys()
1 dic = dict.fromkeys(['key1', 'key2', 'key3'], 'values') 2 # 类似将字典中的键初始化为一个默认的值 3 print(dic) # {'key1': 'values', 'key2': 'values', 'key3': 'values'} 4 dic2 = dic.fromkeys(['key1', 'key2', 'key3'], ['values1', 'values2']) 5 print(dic2) # {'key1': ['values1', 'values2'], 'key2': ['values1', 'values2'], 'key3': ['values1', 'values2']} 6 dic2['key1'][0] = 'values3' # fromkeys()创建的字典,修改字典中的一个嵌套列表中的值,多有的键值都修改 7 print(dic2) # {'key1': ['values3', 'values2'], 'key2': ['values3', 'values2'], 'key3': ['values3', 'values2']}
4.2 get()
1 dic = {'name': 'Bob', 'age': 60, 'sex': '男'} 2 print(dic.get('name')) # Bob 3 print(dic.get('hobby')) # None 可以判断字典中是否有此键 4 print(dic.get('hobby', 'basketball')) # basketball
4.3 copy()
注:只是浅拷贝,只对顶层的拷贝
1 dic = {'name': 'Bob', 'age': 60, 'sex': '男', 'hobby': ['read', 'basketball']} 2 dic2 = dic.copy() # {'name': 'Bob', 'age': 60, 'sex': '男', 'hobby': ['read', 'basketball']} 3 print(dic2) 4 dic['hobby'][0] = 'write' 5 print(dic2) # {'name': 'Bob', 'age': 60, 'sex': '男', 'hobby': ['write', 'basketball']}
5 字典的排序
采用sorted()
1 dic = {'b': 'b', 'a': 'a', 'c': 'c'} 2 print(dic) 3 for key in sorted(dic): 4 print(key, dic[key])
6 字典的遍历
1 dic = {'name': 'Bob', 'age': 60, 'sex': '男'} 2 for key in dic: 3 print(key, dic[key]) 4 5 for item in dic.items(): 6 print(item) 7 8 for i, v in dic.items(): 9 print(i, v)