python 入门之 – 数据字典(十八)
通过标题名称可以知道,字典是用来查询数据的,它是以
key
和
value
的形式存在的,在学习数据字典之前我来用几个例子说明一下,如:
info = [
['张三',21,'男','程序员'],
['李四',18,'女','设计师'],
['王五',26,'男','策划'],
['赵六',21,'男','实习生'],
]
这里是一组人员的信息,我现在要找到张三的信息,个人信息,并且我是不知道他在数组的第几个的,那么这个时候我肯定要用循环了,如:
for i in info :
if i[0]=='张三' :
print(i)
结果为:
['张三', 21, '男', '程序员']
这样是没毛病的,但是
python
给我们提供了一种更加友好的数据类型,那就是标题里面的 字典,这样我其实一行代码就可以找到该数据,而不需要通过循环来操作三行代码了,我现在把数据结构类型改变一下如:
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
"赵六":[21,'男','实习生'],
}
上方数据结构就是
python
中的字典,其实有过编程基础的朋友就知道了,他不就是一个
json
格式吗,确实是这样的,他就是
json
格式的,在
python
里面
json
格式就是数据字典,那么有了数据字典之后我在来查找一下关于张三的数据,其实就简单了,如:
print(info['张三'])
执行上方
print
之后在控制台打印出来的数据就是这样的了:
[21, '男', '程序员']
,这样一来是不是简介明了多了,我直接通过
info
这个对象集合的坐标名就拿到了对应的数据。
在
python
的数据字典里面有几个至关重要的特性,必须要掌握的,如:
1、字典必须是由
{}
括号包裹住的
2、
key:value
结构
3、
key
必须是可
hash
、且必须为不可变数据类型、必须唯一
4、可存放任意多个值、可修改、可以不唯一
5、无须
6、查找速度快
在
python
中字典也是可以进行 增删改查 的,以下有几个在
python
中常用的字典方法:
增加:
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师']
info["王五"]=[26,'男','策划']
print(info)
输出结果为:
{'张三':[21,'男','程序员'],'李四':[18,'女','设计师'],'王五':[26,'男', 策划']}
修改:
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划']
info["张三"] = [18,'男','程序员']
info["张三"][1] = '女'
print(info)
输出结果为:
{'张三':[18,'女','程序员'],'李四':[18,'女','设计师'],'王五':[26,'男','策划']}
判断一个属性是否存在数据字典内:
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划']
"张三" in info
>> True
查找:
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划']
info.get("张三") #通过 get() 方式查找,如果找不到的话会返回一个 None
>> [21,'男','程序员']
info["李四"] #直接通过值查找,如果找不到的话会报错
>> [18,'女','设计师']
删除:
关于删除有好几种方法,先来看看第一种:
pop()
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
"赵六":[21,'男','实习生'],
info.pop("赵六") #删除那个值,就把 key 值写进去
print(info)
>> {'张三': [21, '男', '程序员'], '李四': [18, '女', '设计师'], '王五': [26, '男', '策划']}
第二种:
del
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
"赵六":[21,'男','实习生'],
del info["赵六"] #删除那个值,就把 key 值写进去
print(info)
>> {'张三': [21, '男', '程序员'], '李四': [18, '女', '设计师'], '王五': [26, '男', '策划']}
以上两种就是删除的方法,关于删除其实还有一种随机删除数据,只有在非常多数据的情况下,才会随机删除,这种数据量的大小我目前还不太清楚是多少,数据比较少的情况下会删除最后一个,但是这种方法不常用,因为作为开发者来说,我们一般不回去随机删除,都是指定删除我们不需要的数据,我还是把这种随机删除的方法记录一下吧:
popitem()
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
info.popitem()
print(info)
>> {'张三': [21, '男', '程序员'], '李四': [18, '女', '设计师']}
以上常用的增删改查就说完了,说白了,其实就是操作
json
数据,
json
和数组一样都可以层层嵌套,如:
{
"a":{
"list":[
"a":"12312",
"b":123,
"c":[
"a":"b"
}
这就是常规的
json
格式了,如果还看不懂的朋友可以去了解一下什么是
json
,因为这个是必学的知识点,今后在数据库里面存储的全部都是这种
json
格式,学
python
不可能不和数据库打交道的。
除去以上常规的增删改查方法,其实
python
还内置了几个其他的方法,如:
clear()
: 清空整个字典
copy()
: 复制整个字典,和数组(列表)当中一摸一样的用法,这里不细说,不知道的朋友可以去看我写的python 入门十二章节和十四章节
keys()
: 获取整个字典中的 key 值
values()
: 获取整个字典中的 value 值
items()
: 将整个字典转成一个数组,并且数组里面的 key 和 value 都以一个个的小元祖排序
update()
: 将两个元祖进行拼接
setdefault()
: 往字典里面添加 key~value ,如果发现 key 存在将会返回 key 的 value,否则就将数据添加进去
fromkeys()
: 构造一个初始化的字典(json),并且返回
clear()
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
info.clear()
print(info)
>> {}
keys()
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
info.keys()
>> dict_keys(['张三', '李四', '王五']) #将获取的 key 值变成了一个列表扎实
values()
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
info.values()
>> dict_values([[21, '男', '程序员'], [18, '女', '设计师'], [26, '男', '策划']])#将获取的 value 值变成了一个列表扎实
items()
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
info.items()
>> dict_items([('张三', [21, '男', '程序员']), ('李四', [18, '女', '设计师']), ('王五', [26, '男', '策划'])])
update()
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
info2 = {
"赵六":[21,'男','程序员'],
"李四":[30,'人妖','表演'],
info.update(info2)
print(info)
>> {'张三': [21, '男', '程序员'], '李四': [30, '人妖', '表演'], '王五': [26, '男', '策划'], '赵六': [21, '男', '程序员']}
setdefault()
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
info.setdefault('王五','123') #王五存在,将王五的 value 返回出来
>> [26,'男','策划']
info.setdefault('赵六','123') #赵六不存在,没有返回值,所以添加成功
print(info)
>> {'张三': [21, '男', '程序员'], '李四': [18, '女', '设计师'], '王五': [26, '男', '策划'], '赵六': '123'}
fromkeys()
info = {}
info = info.fromkeys(['a','b','c'],'123') #第一个参数为数组,定义一个表的key值,第二个值为初始化的value值,可以是任何类型的数据,如果不写默认返回 None
print(info)
>> {'a': '123', 'b': '123', 'c': '123'}
以上就是
python
内置的所有字典的方法了,但是通过测试我发现其实字典和数组一样也是可以循环的,如:
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],
for i in info:
print(i)
>> 王五
可以看到循环出来的只有
key
值,那么我想要打印他的
value
值,可以进行如下操作
info = {
"张三":[21,'男','程序员'],
"李四":[18,'女','设计师'],
"王五":[26,'男','策划'],