字典是一个无序的数据集合,使用print输出字典时,通常输出的顺序和定义的顺序不一致
1.集合的定义
如何定义一个空集合
s = {}
print(type(s))
字典的结构是key-value键值对,value可以是任意数据类型
s = {
'linux':[100,99,88],
'westos':[190,564,645]
} ##如图所示,:前是key值,:后是value值
print(s)
print(type(s))
工厂函数,就是dict()
d = dict()
print(d)
print(type(d))
d1 = dict(a=1,b=2)
print(d1)
print(type(d1))
字典可以嵌套
students = {
'03113009':{
'name':'tom',
'age':18,
'score':80
},
'03113010':{
'name': 'laoli',
'age': 19,
'score':30
}
}
print(students['03113010']['name']) ##显示student数组中03113010数组的name的value值
如果所有的key和value值是一样的,可以这样定义
print({}.fromkeys({'1','2'},'03113009'))
2.字典的特性
1)字典不支持索引,不支持切片,字典的重复和连接无意义,因为字典的key值唯一
2)成员操作符
d = {
'1':'a',
'2':'b'
} ##举例子的字典
print('1' in d)
print('1' not in d)
3)for循环,默认遍历字典的key值
d = {
'1':'a',
'2':'b'
} ##举例子的字典
for key in d:
print(key)
4)遍历字典
d = {
'1':'a',
'2':'b'
} ##举例子的字典
for key in d:
print(key,d[key])
for key,value in d.items():
print(key,value)
3.字典的增加
字典增加的规则为,如果key值存在,则更新value值,如果key值不存在,则新增key值和value值,例如下面例子
service = {
'http':80,
'ftp':21,
'ssh':22
}
service['mysql'] = 3306 ##没有mysql这个key值,所以新增mysql这对k-v值
print(service)
service['http'] = 443
print(service) ##有http这个key值,所以将http的value更新为443
添加多个key-value键值对
service_backup = {
'https':443,
'tomcat':8080,
'http':8080
}
service.update(service_backup) ##一次增加三个
print(service)
service.update(flask=9000,http=8000) ##更新一个
print(service)
setdefault添加key值
service.setdefault('http',9090)
print(service)
service.setdefault('oracle',44575)
print(service)
4.字典的删除
1)del删除
service = {
'http':80,
'ftp':21,
'ssh':22
}
del service['http']
print(service)
2.pop删除
service = {
'http':80,
'ftp':21,
'ssh':22
}
item = service.pop('http') ##pop删除指定key的key-value
print(item) ##如果key存在,删除,并且返回删除key对应的value
print(service) ##如果key不存在,报错
popitem删除最后一个key-value值
service = {
'http':80,
'ftp':21,
'ssh':22
}
item = service.popitem()
print('删除的key-value对是:',item)
print(service)
清空字典内容
service.clear()
print(service)
输出是一个空集合
3.字典的查看
这里举例的字典依旧是之前的字典
查看字典的key值
print(service.keys())
查看字典的value值
print(service.values())
查看key的value值,若不存在,则报错
print(service['https'])
查看key的value值
key不存在,默认返回none
key不存在,有default,则返回default
print(service.get('https',443))
print(service.get('https'))
遍历
for k,v in service.items():
print(k,'--->',v)
判断是否在字典中
if 'https' in service:
print(service['https'])
else:
print('key not exist')
get方法获取指定key对应的value值
如果key存在,则返回value值
如果key不存在,默认返回none,如果需要指定返回值,传值即可,如下
print(service.get('https','ket not exist'))
4.字典练习1
#数字重复统计: 1)随机生成1000个整数; 2)数字范围[20,100]; 3)升序输出所有不同的数字及其每个数字重复的次数
import random
all_nums = []
for item in range(1000):
all_nums.append(random.randint(20,100))
#对生成的1000个数进行排序,然后加到字典中
sorted_nums = sorted(all_nums)
num_dict = {}
for num in sorted_nums:
if num in num_dict:
num_dict[num] += 1
else:
num_dict[num] = 1
print(num_dict)
5.字典练习2
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.; # 1. 用户输入一句英文句子; # 2. 打印出每个单词及其重复的次数; "hello java hello python" # hello 2 # java 1 # python 1
答案日后写~