"""
存储一天温度变化记录 使用的一个列表进行存储的
7点 9点 11点 2点 4点 6点
为了更方便表达数据的含义,可以使用字典来进行存储
{key:value, key:value}
会给每一个数据设置标记, 通过标记名获取对应的数据值
字典是使用键值对进行数据的存储,是通过键定位值的,要求键是不允许重复的, 键的内容一旦确定不允许发生变换
字典是无序的可变序列
无序:代表元素没有位置编号,也就是不同过下标获取数据 只能通过键获取数据值
可变:数据值可以修改 可以增加新的键值对 删除键值对
"""
air_temp ={'7点':17,'9点':20,'11点':26,'14点':30,'16点':25,'18点':22}print(air_temp)# 获取数据的话通过标记名取值print(air_temp['11点'])# 如果键不存在就报错# 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点']=18print(air_temp)# air_temp.clear()# 遍历# 直接遍历字典 遍历的是字典中的键 [直接对字典进行成员操作 获取的是键]for ele in air_temp:print(ele, air_temp.get(ele))# 等价于print(air_temp.keys())# 字典中所有的键 dict_keys(['7点', '9点', '14点', '16点', '18点', '19点'])for k in air_temp.keys():print(k)print('============')# 单独拿值print(air_temp.values())# dict_values([17, 20, 30, 25, 22, 20])for v in air_temp.values():print(v)print('============')# 获取字典中键值组合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)print('============')for item in air_temp.items():print(item)print('============')for k, v in air_temp.items():print(k, v)#拆分
4.字典的案例
"""
词频统计
词/字符/数字 出现的个数 或者对数据进行归类
"""
s ='good good study day day up'print(s)"""
统计每个字符出现的个数 字符-个数 ====》 使用字典类型展示数据
思路:
1. 遍历字符串 获取每个字符
2. 把字符出现的个数存储字典中 字符与个数的信息 【字符为键 个数为值】
把遍历到的字符作为键 个数作为值存放于字典中
"""
count_dict ={}# 空字典 因为不知道最终有多少个键值对for ch in s:# 遍历获取每个字符# 逻辑if ch notin count_dict:# 直接对字典使用成员运算 获取的是键# 代表第一次出现
count_dict.setdefault(ch,1)else:# 次数+1
count_dict[ch]= count_dict.get(ch)+1print(count_dict)# 归类
nums =[19,27,38,41,25,66,24,32,51]# 偶数为一类 奇数为一类# 字典中会有两组键值对 值为什么是[] 因为偶数是什么 有多少个不知道 奇数是什么 有多少个 也不知道# 但是肯定是多个的 所以放一个可变的容器
classify_dict ={'even':[],'odd':[]}# 遍历for ele in nums:if ele %2==0:
classify_dict['even'].append(ele)else:
classify_dict['odd'].append(ele)print(classify_dict)# 每一类的数据的个数
classify_dict1 ={'even':0,'odd':0}# 遍历for ele1 in nums:if ele1 %2==0:
classify_dict1['even']+=1else:
classify_dict1['odd']+=1print(classify_dict1)"""
练习:
1.data = "hello nice to meet you nice to meet you too good fine nice"
统计每个单词出现的个数
2.nums = [82,71,65,43,29,72,64,58,87,39]
将十位大于个位的归为一类 另外一种自成一类
"""
data ="hello nice to meet you nice to meet you too good fine nice"
s = data.split(' ')
count_dict ={}for i in s:# 遍历获取每个字符# 逻辑if i notin count_dict:# 直接对字典使用成员运算 获取的是键# 代表第一次出现
count_dict.setdefault(i,1)else:# 次数+1
count_dict[i]= count_dict.get(i)+1print(count_dict)
nums =[82,71,65,43,29,72,64,58,87,39]
nums_dict ={'gdys':[],'other':[]}# 遍历for i in nums:if i //10%10> i %10:
nums_dict['gdys'].append(i)else:
nums_dict['other'].append(i)print(nums_dict)# 字典数据的过滤
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:valueprint({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})