一、创建字典
dict字典是一个无序的数据集合,使用print输出字典的时候,通常输出的顺序和定义的顺序不一致
1、空字典
2、key-value 键值对:key–不可变数据类型 value—可以是任意数据类型
3、工厂函数:dict()
4、fromkey
二、访问字典的值
三、基本操作
字典是无序的,所以不支持索引和切片
len(d),返回字典d中的键值对的数量
d[key],返回字典d中键(key)的值(value)
d[key]=value,将值(value)赋值给字典d中的键(key)
del d[key],删除字典d的键(key')项(将该键值对删除)
key in d ,检查字典d中是否含有键为key的项
四、字典的方法
1)、增加
# 创建字典
services = {
'ssh': 22,
'mysql': 3306
}
# # 1). 根据key值增加;services[key], 如果key不存在, 增加键值对; 如果key已经存在, 更新key对应的value值;
# services['http'] = 80
# print(services)
# services['ssh'] = 80
# print(services)
# # 2). setdefault, 如果key不存在, 增加键值对; 如果key已经存在,不做任何操作;
# services.setdefault('http', 80)
# print(services)
#
# services.setdefault('ssh', 80)
# print(services)
# 3). update,(和第一种方法的区别: 可以一次更新多个键值对) 如果key不存在, 增加键值对; 如果key已经存在, 更新key对应的value值;
services.update({'http':80, 'ftp':21})
print(services)
services.update({'ssh': 80})
print(services)
2、删除
# 创建字典
services = {
'ssh': 22,
'mysql': 3306
}
# # 1). 删除ssh对应的键值对
# del services['ssh']
# print(services)
# # 2). 删除ssh对应的键值对, 并返回ssh对应的value值, 可以保存并使用;
# popReturn = services.pop('ssh')
# print(services)
# print(popReturn)
# # 3). 随机删除字典的key-value值;
# services.popitem()
# print(services)
# 4). clear
services.clear()
print(services)
3、查找
# 创建字典
services = {
'ssh': 22,
'mysql': 3306,
}
print(services.keys())
print(services.values())
print(services.items())
# # 如何遍历字符串?
# for item in 'hello':
# print(item, end=',')
#
# # 如何遍历列表?
# for item in [1, 2, 3]:
# print(item , end=':')
# # 如何遍历元组?
# for item in (1, 2, 3):
# print(item )
# 如何遍历字典?
# 1). 遍历字典, 默认遍历的是字典的key值;
for item in services:
print(item)
# 2). 遍历字典的所有value值;
for value in services.values():
print(value)
# 3). 获取字典的key-value对: [('ssh', 22), ('mysql', 3306)]
# item = ('ssh', 22)
for key,value in services.items():
print(key, '->', value)
五、练习
1、
"""
重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.>;
# 1. 用户输入一句英文句子;
# 2. 打印出每个单词及其重复的次数;
"hello java hello python"
# hello 2
# java 1
# python 1
"""
s = input('s:')
#1.把每个单词分割处理
s_li = s.split()
#2.通过字典存储该单词和其出现的次数
word_dict = {}
"""
3.依次循环遍历列表
如果列表元素不在字典的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)
2、
"""
数字重复统计:
1) 随机生成100个整数
2) 数字范围[20,100]
3) 升序输出所有不同的数字及其每个数字的重复次数
"""
import random
b = []
num_dict = {}
##随机生成1000个[20,100]的随机数
for i in range(100):
a = random.randint(20, 100)
b.append(a)
b2 = sorted(b)
print(b)
for item in b2:
if item not in num_dict:
num_dict[item] = 1
else:
num_dict[item] += 1
print(num_dict)
for k, v in num_dict.items():
print(k, '出现了:', v, '次')