02字典
简介
字典是python中的一种数据结构,将它看做一个键:值对的集合
1.字典的定义
>>> xiaoming={'username': 'xiaoming', 'age': 30, 'work': 'testing', 'hobby': ['sports', 'movie']}
字典是没有顺序的,不支持索引,切片和步长的操作:
访问字典中的某个字段值,通常使用[key]方式进行访问:
>>> xiaoming['username'] #通过key值访问value
2.常用方法
添加
>>> xiaoming={'username': 'xiaoming', 'age': 30, 'work': 'testing', 'hobby': ['sports', 'movie']} #新增 >>> xiaoming['salary']=5000 {'username': 'xiaoming', 'age': 30, 'work': 'testing', 'hobby': ['sports', 'movie'], 'salary': 5000}
修改
xiaoming['age']=25 >>> xiaoming #输入结果 {'username': 'xiaoming', 'age': 25, 'work': 'testing', 'hobby': ['sports', 'movie'], 'salary': 5000}
删除
pop删除指定字段
>>> xiaoming.pop('age') 25 >>> xiaoming {'username': 'xiaoming', 'work': 'testing', 'hobby': ['sports', 'movie'], 'salary': 5000}
popitem删除最后一个字段
>>> xiaoming.popitem() ('salary', 5000) >>> xiaoming {'username': 'xiaoming', 'work': 'testing', 'hobby': ['sports', 'movie']}
update更新或者新增字段
>>> xiaoming.update(age=20) >>> xiaoming {'username': 'xiaoming', 'age': 20, 'work': 'testing', 'hobby': ['sports', 'movie']}
3.查找
key值在字典中存在
>>> xiaoming {'username': 'xiaoming', 'work': 'testing', 'hobby': ['sports', 'movie']} >>> 'testing' in xiaoming #标准用法 False
get(k)
>> xiaoming.get('work') 'testing'
通过k获取value
>>> xiaoming['username'] 'xiaoming'
keys获取所有的key,生成一个列表
>>> xiaoming.keys() dict_keys(['username', 'age', 'work', 'hobby'])
values获取所有的value,生成一个列表
>>> xiaoming.values() dict_values(['xiaoming', 30, 'testing', ['sports', 'movie']])
>>> xiaoming.update(sex='男') #新增字段 >>> xiaoming {'username': 'xiaoming', 'age': 20, 'work': 'testing', 'hobby': ['sports', 'movie'], 'sex': '男'}
items()把字典转换成列表
>>> xiaoming.items() dict_items([('username', 'xiaoming'), ('age', 20), ('work', 'testing'), ('hobby', ['sports', 'movie']), ('sex', '男')])
clear() 清空列表
>>> xiaoming.clear() >>> xiaoming {}
5.循环字典
方法1:
for k in xiaoming: print(k,xiaoming[k])
#输出结果
username xiaoming age 25 work testing hobby ['sports', 'movie'] salary 5000
方法2:
for k,v in xiaoming.items(): print(k,v)
#输出结果
username xiaoming age 30 work testing hobby ['sports', 'movie'] salary 5000
①方法1的效率比方法2的效率高很多
②方法1是直接通过key取value
③方法2是先把字典转换成一个列表,再去取值
④当数据量比较大的时候,用第二种方法时,字典转换成列表的这个过程需要花大量的时间老转换,当然数据量不大,没有关系,效率差不多