python字典dict-创建&嵌套&查找&修改&多种遍历
2020-07-30 18:46:46 来源:易采站长站 作者:
字典 dict 用的好闪电提速
优点
通过哈希Hash算法,提高搜索能力。因此明显优于for循环
顺序?
每个键值对存储在hash值,地址里。没有顺序。
因此无法使用下标访问
但是可通过dict_name[key_name]访问对应的value
dict操作
| 操作语法 | 功能 |
|---|---|
| 创建字典 |
| 往dict添加key-value |
| 返回key对应的value |
| 删除字典中的key-value |
| 返回布尔值,判断key是否在dict中,只能查找key不能查找value |
dict成员函数
| 成员函数 | 功能 |
|---|---|
| 复制 |
| 以iterable元素为key,指定value创建dict |
| 查找key返回对应的value,如果没有key则自动创建value=None |
| 添加key-value并且返回value |
| 返回可遍历的(key,value)keyvalue数组,无顺序但可遍历 |
定义法创建
dict = {key : value(object),key : value(object),....}key:必须是可哈希类型,因为哈希算法必须知道如何把键的值转化为散列分布的整数
| 类型 | 特点 | 包括 |
|---|---|---|
| 可哈希类型 | 只读 | int,float,str,tuple |
| 不可哈希类型 | 可修改 | dict, list |
value:值可以是任意对象(包括字典构成嵌套)
#创建:
phonebook = {'A':'1111-2222','B':'2222-3333','C':'3333-4444','D':'4444-5555'}#填加
phonebook['E']='5555-6666'
#打印
print(phonebook)
{'A': '1111-2222', 'B': '2222-3333', 'C': '3333-4444', 'D': '4444-5555', 'E': '5555-6666'}
dict函数 创建
dorothy = dict(name='dorothy',id='1003',age=26)
dorothy
{'name': 'dorothy', 'id': '1003', 'age': 26}
dict操作
| 操作语法 | 功能 |
|---|---|
| dict_name = dict(key1 = value1,key2 = value2,…) | 创建字典 |
| dict_name[key]=value | 往dict添加key-value |
| dict_name[key] | 返回key对应的value |
| del dict_name[key] | 删除字典中的key-value |
| key_name in dict_name | 返回布尔值,判断key是否在dict中,只能查找key不能查找value |
print(dorothy['name'])
dorothy['gender']='female'
del dorothy['id']print('name' in dorothy)
print(dorothy)
dorothy
True
{'name': 'dorothy', 'age': 26, 'gender': 'female'}
dict成员函数
| 成员函数 | 功能 |
|---|---|
| {}.copy() | 复制 |
| {}.fromkeys(iterable(可遍历的), value=None, /) | 以iterable元素为key,指定value创建dict |
| {}.get(key_name) | 查找key返回对应的value,如果没有key则自动创建value=None |
| {}.get(key_name,value) | 添加key-value并且返回value |
| {}.items(),{}.keys(),{}.values() | 返回可遍历的(key,value)keyvalue数组,无顺序但可遍历 |
#复制
dorothyCopy = dorothy.copy()
print('dorothy dorothyCopy:',dorothy,'/',dorothyCopy)#可遍历中创建
#直接调用dict的函数
d= dict.fromkeys(range(5),'unknow')
#告诉解释器,字典{}有个成员函数fromkeys。我调用了他来创建一个新的字典赋值给d1.原本的{}不发生改变
d1={}.fromkeys(range(5),'unknow')
print('d1[1] d[1]:',d1[1],'/',d[1])
#调用加创建
print('dorothyCopysName:',dorothyCopy.get('name'))
print('dorothyCopysSalary:',dorothyCopy.get('salary',1000))
dorothy dorothyCopy: {'name': 'dorothy', 'age': 26, 'gender': 'female'} / {'name': 'dorothy', 'age': 26, 'gender': 'female'}
d1[1] d[1]: unknow / unknow
dorothyCopysName: dorothy
dorothyCopysSalary: 1000
遍历
print("dorothyCopy:",dorothyCopy)#字典中遍历是在key里遍历
for x in dorothyCopy: #x是键key
print('key:',x,end=',')
print('n')
#dict_name.keys()返回所有的key,类型是dict_keys
print('keys:',dorothyCopy.keys())
print('type:',type(dorothyCopy.keys()))
print('n')
#键值对中遍历,键值对类型是tuple
for x in dorothyCopy.items():
print(x)
for key,value in dorothyCopy.items():#元组是一个序列,这是一个序列解包过程
print(key,'-',value)
dorothyCopy: {'name': 'dorothy', 'age': 26, 'gender': 'female'}
key: name,key: age,key: gender,keys: dict_keys(['name', 'age', 'gender'])
type:
('name', 'dorothy')
('age', 26)
('gender', 'female')
name - dorothy
age - 26
gender - female
作者:upup的ycc













闽公网安备 35020302000061号