Python中的字典的特性以及增删改查

1.字典的定义

#字典是一个无序的数据集合,使用print输出字典的时候
#通常输出的顺序和定义的顺序是不一致的
字典相当于键值对的
#字典是一个无序的数据集合
(1)列表类型转换

-------->题目要求
将两个列表转换成列表类型或者字典类型:
-------->代码如下

users = ['user1','user2']
passwd = ['123','456']
print(zip(users,passwd))	##无法正确输出
print(list(zip(users,passwd)))	##将类型转换成列表类型输出
print(dict(zip(users,passwd)))	##将类型转换成字典类型输出

-------->测试结果如下
Python中的字典的特性以及增删改查
(2)空字典
-------->题目要求
定义一个空的字典
-------->代码如下

s = {}
print(type(s))

-------->测试结果如下
Python中的字典的特性以及增删改查

(3)创建字典并输出其类型
##字典:key-value键值对
#value可以是任意数据类型

-------->题目要求
-------->代码如下

s = {
    'linux':[100,99,88],
    'westos':[190,453,334]
}
print(s)
print(type(s))

-------->测试结果如下
Python中的字典的特性以及增删改查

(4)工厂函数
-------->题目要求
举例说明工厂函数如何应用
-------->代码如下

#工厂函数
d = dict()	##dict相当于一个函数
print(type(d))	##查看d是一个类型
#举例
d1 = dict(a=1,b=2)
print(d1,type(d1))

-------->测试结果如下
Python中的字典的特性以及增删改查

(5)字典里的嵌套
-------->题目要求
当输入students时,输出两个学生名,学生名中输入学生的信息,信息中又分了很多信息
-------->代码如下

students = {
    '0311':{
        'name':'wsp',
        'age':'18',
        'score':'80'
    },
    '0322':{
        'name':'laoli',
        'age':30,
        'score':59
    }
}
print(students['0311']['name'])

-------->测试结果如下
Python中的字典的特性以及增删改查

(6)所有的key对应的value值是一样的
-------->题目要求
举例说明所有的key对应的value值是一样的
-------->代码如下

print({}.fromkeys({'1','2','3'},'00000'))

-------->测试结果如下
Python中的字典的特性以及增删改查

2.字典的特性

字典不支持索引和切片,且字典的重复和连接毫无意义
(1)字典不支持索引

-------->题目要求
当字典非要使用索引时,会出现什么情况
-------->代码如下

d = {
    '1':'a',
    '2':'b'
}
#字典不支持索引
print(d[:])

-------->测试结果如下
Python中的字典的特性以及增删改查

(2)字典不支持切片
-------->题目要求
当字典非要使用切片时,会出现什么情况
-------->代码如下

d = {
    '1':'a',
    '2':'b'
}
#字典不支持切片
print(d[:])

-------->测试结果如下
Python中的字典的特性以及增删改查

(3)成员连接符(检查key值)
-------->题目要求
举例说明字典成员连接符的使用
-------->代码如下

d = {
    '1':'a',
    '2':'b' }
#成员操作符 print('1' in d)	##查看key值是否在字典中 print('a' in d)	##查看value值是否在字典中,显示false,因为成员操作符的对象是key值

-------->测试结果如下
Python中的字典的特性以及增删改查

(4)for循环,默认变量字典的key值
-------->题目要求
举例说明字典的for循环使用
-------->代码如下

d = {
    '1':'a',
    '2':'b'
}
#for循环
for i in d:
    print(i)

-------->测试结果如下
Python中的字典的特性以及增删改查

(5)for循环,遍历字典
-------->题目要求
使用for循环,将字典的key值和value值都输出
-------->代码如下

d = {
    '1':'a',
    '2':'b'
}
#遍历字典
for i in d:
    print(i,d[i])

-------->测试结果如下
Python中的字典的特性以及增删改查
注意:i是键值,d[i]是键值对应的value值

3.字典的增加

(1)增加一个元素
-------->题目要求
举例说明在字典中如何再增加一个元素
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
print(services)
services['mysql'] = 3306    #key值不存在,所以添加对应的key-value值
print(services)

-------->测试结果如下
Python中的字典的特性以及增删改查

(2)增加一个元素
#增加一个元素
#如果key值存在,则更新对应的value值
#如果key值不存在,则添加对应的key-value值

-------->题目要求
举例说明在字典中如何再增加一个元素
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
print(services)
services['mysql'] = 3306    #key值不存在,所以添加对应的key-value值
print(services)
services['http'] = 443  ##key值存在,所以更新对应的value值
print(services)

-------->测试结果如下
Python中的字典的特性以及增删改查
(3)增加多个元素
-------->题目要求
举例说明在字典中如何增加多个元素
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
print(services)
#添加多个key-value值
services_backup={
    'https':443,
    'tomcat':8080,
    'http':8080
}
services.update(services_backup)
print(services)

-------->测试结果如下
Python中的字典的特性以及增删改查

(4)增加多个元素(如果元素存在,则进行更新,如果元素不存在,则增加)
-------->题目要求
举例说明如何增加多个元素
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
print(services)
#添加多个key-value值
services_backup={
    'https':443,
    'tomcat':8080,
    'http':8080
}
services.update(flask=9000,http=8000)
print(services)

-------->测试结果如下
Python中的字典的特性以及增删改查

(5)利用setdefault添加key值
#setdefault添加key值
#如果key值存在,不做修改
#如果key值不存在,添加对应的key-value

-------->题目要求
举例说明当key值存在和不存在时,使用setdefault添加key值时会有什么变化
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
services.setdefault('http',9090)
print(services)
services.setdefault('oracle',44575)
print(services)

-------->测试结果如下
Python中的字典的特性以及增删改查

4.字典的删除

(1)del
-------->题目要求
举例说明如何在字典中使用del删除字典的key-value值
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
del services['http']
print(services)

-------->测试结果如下
Python中的字典的特性以及增删改查

(2)pop
#pop删除指定key的key-value
#如果key存在,删除,并返回删除key对应的value
#如果key不存在,报错

-------->题目要求
举例说明如何在字典中使用pop删除字典的key-value值
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
item = services.pop('http')
print(item)
print(services)

-------->测试结果如下
Python中的字典的特性以及增删改查
注意:利用pop删除字典中的key-value值时,可以将其删除的值放至一个变量中,想要使用时依旧可以使用

(3)popitem(删除最后一个key-value值)
-------->题目要求
举例说明使用popitem删除字典中的最后一个key-value值
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
print('原来的字典是:',services)
item = services.popitem()
print('删除的元素是:',item)
print('删除后的字典是:',services)
item = services.popitem()
print('再次删除的元素是:',item)
print('再次删除后的字典是:',services)

-------->测试结果如下
Python中的字典的特性以及增删改查

(4)使用clear清空字典内容
-------->题目要求
举例说明如何使用clear清空字典内容
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
services.clear()
print(services)

-------->测试结果如下
Python中的字典的特性以及增删改查

5.字典的查看

(1)查看字典的key值和value值
-------->题目要求
举例说明如何查看看字典的key值和value值
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
#查看字典的key值
print(services.keys())
#查看字典的value值
print(services.values())
#查看字典的key-value值
print(services.items())
#查看ley的value值
#如果key不存在,默认返回None
#如果key存在,有default值,则返回default值
print(services.get('http'))

-------->测试结果如下
Python中的字典的特性以及增删改查

(2)遍历
-------->题目要求
使用两种方法遍历字典并输出
-------->代码如下

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
for k,v in services.items():
    print(k,'--->',v)
print('----------------------')
for k in services:
    print(k,'--->',services[k])

-------->测试结果如下
Python中的字典的特性以及增删改查

6.字典的练习:

(1)练习(一)
-------->题目要求
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.>;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
“hello java hello python”
#hello 2
#java 1
#python 1
-------->代码如下

s = input('s:')
#1.把每个单词分割处理
s_li = s.split()
print(s_li)
#通过字典存储该单词和其出现的次数
word_dict = {}
"""
依次循环遍历列表
    如果列表元素不在字典的key中,将元素作为key 1作为value值
    如果列表元素在字典的key中,直接更新元素的value值,在原有的基础上加1
"""
for item in s_li:
    if item not in word_dict:
        word_dict[item] = 1
    else:
        word_dict[item] += 1
print(word_dict)

-------->测试结果如下
Python中的字典的特性以及增删改查

(2)练习(二)
-------->题目要求
数字重复统计:
1) 随机生成1000个整数
2) 数字范围[20,100]
3) 升序输出所有不同的数字及其每个数字的重复次数
-------->代码如下

import random
word_dict={}
a = []
for i in range(1000):
    a.append(random.randint(20,100))
a_li = sorted(a)
for item in a_li:
    if item not in word_dict:
        word_dict[item] = 1
    else:
        word_dict[item] +=1
print(word_dict)

-------->测试结果如下
Python中的字典的特性以及增删改查