字典是使用键值对进行数据的存储,是通过键定位值的,要求键是不允许重复的, 键的内容一旦确定不允许发生变换
字典是无序的可变序列
无序:代表元素没有位置编号,也就是不同过下标获取数据 只能通过键获取数据值
可变:数据值可以修改 可以增加新的键值对 删除键值对
air_temp = {'7点': 17, '9点': 20, '11点': 26, '14点': 30, '16点': 25, '18点': 22}
print(air_temp) # {'7点': 17, '9点': 20, '11点': 26, '14点': 30, '16点': 25, '18点': 22}
# 如果键不存在就报错
print(air_temp['10点'])
# KeyError: '10点'
# 获取数据值推荐方式
print(air_temp.get('11点'), air_temp.get('10点')) # 26 None
# 获取键值对的个数
print(len(air_temp)) # 6
# 添加新的键值对
air_temp.setdefault('19点', 20) # 影响的是原数据
print(air_temp)
# 移除键值对
air_temp.pop('11点')
print(air_temp)
# 修改
air_temp['19点'] = 18
print(air_temp)
# 清空字典
air_temp.clear()
# 遍历
# 直接遍历字典 遍历的是字典中的键 [直接对字典进行成员操作 获取的是键]
air_temp = {'7点': 17, '9点': 20, '11点': 26, '14点': 30, '16点': 25, '18点': 22}
for ele in air_temp: # 遍历键
print(ele, air_temp.get(ele)) # 通过键获取对应的值
# 输出结果:{'7点': 17, '9点': 20, '11点': 26, '14点': 30, '16点': 25, '18点': 22}
# 等价于
print(air_temp.keys()) # 字典中所有的键 dict_keys(['7点', '9点', '14点', '16点', '18点', '19点'])
for k in air_temp.keys():
print(k)
# 输出结果:
7点
9点
14点
16点
18点
19点
# 获取字典中键值组合
print(air_temp.items()) # dict_items([('7点', 17), ('9点', 20), ('14点', 30), ('16点', 25), ('18点', 22), ('19点', 20)])
for item in air_temp.items():
print(item)
# 输出结果:
('7点', 17)
('9点', 20)
('14点', 30)
('16点', 25)
('18点', 22)
('19点', 18)
# 拆包
for k, v in air_temp.items(): # 拆包
print(k, v)
#输出结果:
7点 17
9点 20
14点 30
16点 25
18点 22
19点 18
1.词频统计(词、字符、数字等出现的个数,或者对数据进行归类)
统计每个字符出现的个数 字符——个数=====>使用字典数据类型展示数据
思路:
1. 遍历字符串,获取每个字符
2. 把字符出现的个数存储在字典中
s = 'good good study day day up'
count_dict = {} # 空字典
for ch in s : # 遍历获取每个字符
if ch not in count_dict: # 直接对字典进行成员运算获取键
# 代表第一次出现
count_dict.setdefault(ch,1) # 第一次出现,添加到字典中
else:
# 次数 +1
count_dict[ch] = count_dict.get(ch) + 1
print(count_dict)
# 输出结果:
{'g': 2, 'o': 4, 'd': 5, ' ': 5, 's': 1, 't': 1, 'u': 2, 'y': 3, 'a': 2, 'p': 1}
nums = [19,27,38,41,25,66,24,32,51]
# 偶数为一类,奇数为一类 【字典中会又两组键对】
classify_dict={'evev':[],'odd':[]}
# 遍历
for ele in nums:
if ele % 2 == 0:
classify_dict['evev'].append(ele)
else:
classify_dict['odd'].append(ele)
print(classify_dict) # {'evev': [38, 66, 24, 32], 'odd': [19, 27, 41, 25, 51]}
nums = [19,27,38,41,25,66,24,32,51]
classify_dict={'evev':0,'odd':0} # 计算个数,初始值设置为 0,每出现一个满足条件的数据+1
for ele in nums:
if ele % 2 == 0:
classify_dict['evev'] += 1 #次数+1
else:
classify_dict['odd'] += 1
print(classify_dict) # {'evev': 4, 'odd': 5}
1.data = "hello nice to meet you nice to meet you too good fine nice ",统计每个字母出现的个数
data = 'hello nice to meet you nice to meet you too good fine nice '
datas = {}
for i in data: # 遍历data中每个字母
if i not in datas: #判断是否是第一次出现
datas.setdefault(i,1) # 如果是第一次出现,添加到新字典,并将值设置为 1
else:
datas[i] = datas.get(i) + 1 # 如果不是第一次出现,则键值 + 1
print(datas)
输出结果:
{‘h’: 1, ‘e’: 9, ‘l’: 2, ‘o’: 9, ’ ': 13, ‘n’: 4, ‘i’: 4, ‘c’: 3, ‘t’: 5, ‘m’: 2, ‘y’: 2, ‘u’: 2, ‘g’: 1, ‘d’: 1, ‘f’: 1}
2.nums=[82,71,65,43,29,72,64,58,87,39]将十位大于个位的数归为一类,另一种自成一类
nums=[82,71,65,43,29,72,64,58,87,39]
nums_dict={'a':[],'b':[]} # 将数归为两类,设置两个键,键值为空用来存放分类后的值
for i in nums:
if i//10 > i%10:
nums_dict['a'].append(i) # 将满足条件的值添加到 a键中
else:
nums_dict['b'].append(i)
print(nums_dict)
输出结果:
{‘a’: [82, 71, 65, 43, 72, 64, 87], ‘b’: [29, 58, 39]}
dict0 = {'hello': 1, 'nice': 3, 'to': 2, 'meet': 2, 'you': 2, 'too': 1, 'good': 1, 'fine': 1}
print(dict0)
# 找到次数为1的单词信息 以键值对形式展示
new_dict = {}
for k, v in dict0.items():
if v == 1:
new_dict.setdefault(k, v)
print(new_dict)
注意:字典中存放的是键值对 key:value
print({k: v for k, v in dict0.items() if v == 1})
# 单词中包含e的词频信息
new_dict1 = {}
for k, v in dict0.items():
if 'e' in k:
new_dict1.setdefault(k, v)
print(new_dict1)
print({k: v for k, v in dict0.items() if 'e' in k})
输出结果:{‘hello’: 1, ‘nice’: 3, ‘meet’: 2, ‘fine’: 1}