一、有个学生成绩的列表[15,58,99,28,78,67,83,57],需要对列表按照标准分组计数。
1)分组标准为[(0,59),(60,79),(80,89),(90,100)]
2)输出结果[(0,59):数量4,(60,79):数量2,(80,89):数量1,(90,100):数量1]
分析:
1、字典的理解和使用,字典可通过字典推导式、zip函数、字典的fromkeys函数生成
2、分组区间作为key,value统计数量,满足要求的计数+1
scores = [15, 58, 99, 28, 78, 67, 83, 57]
group = [(0, 59), (60, 79), (80, 89), (90, 100)]
# 字典生成1-字典推导式
dct = {k: 0 for k in group}
# 字典生成2-zip函数
# count = [0,0,0,0]
# dct = dict(zip(group, count))
# 字典生成3-字典的fromkeys函数, 需要初始化value为0
# dct = dict.fromkeys(group)
# for k in dct: dct[k] = 0
for i in scores:
for k in group:
if k[0] <= i <= k[1]:
dct[k] += 1
break
dct1 = {str(k):"数量"+str(v) for k,v in dct.items()}
print(dct1)
二、输入字符串,输出字符串中出现次数最多的字母及其出现次数
分析:字典的特性去重、字典推导式的使用
def find_max_str(str):
# 集合字典去重,查找所有字母数量
dct = {k: 0 for k in str}
for i in str:
for k in dct.keys():
if i == k:
dct[k] += 1
# 查找字典中value最大的
max = 1
alphamax = ""
for k, v in dct.items():
if v > max:
max = v
alphamax = k
else:
pass
return {alphamax:max}
print(find_max_str("hello hello lala"))
三、现有一个list,里面所有的元素都是字符串,编写一个函数对它实现一个大小写无关的排序,然后打乱这个排好序的list,再查找其中是否有某元素a
分析:
1、列表排序,不区分大小写,元素均转换成大写或小写,用sorted()函数
2、随机排序,导入random,使用random.shuffle(l)
3、列表的查找元素方式index(),不区分大小写的话可先转换后查找;也可直接用any()函数和列表推导式
import random
def list_handle1(lst, find_element):
newlist = sorted(lst, key=lambda i: i.upper())
random.shuffle(newlist)
# 方法一:使用index()完全匹配,注意未找到元素时抛出ValueError异常
try:
idx = newlist.index(find_element)
print("已找到对应元素")
except ValueError:
print("未找到对应元素")
def list_handle2(lst, find_element):
newlist = sorted(lst, key=lambda i: i.upper())
random.shuffle(newlist)
flag = False
# 不区分大小写,先转换成大写再判断
# 方法一:for循环判断,找到元素设置flag为True
# for i in newlist:
# if i.upper() == find_element.upper():
# flag = True
# 方法二:使用any函数+列表推导式
flag = any(i.lower() == find_element.lower() for i in newlist)
if flag == True:
print("已找到对应元素")
else:
print("未找到对应元素")
list_handle1(['a', 'Z', 'C', 'g'], 'a')
list_handle2(['b', 'Z', 'C', 'g'], 'a')
list_handle2(['yes', 'Why', 'change', 'Python'], 'Python')
四、写一段程序,逐行读取一个文本文件(每行均为字符串),并在屏幕上打印文件每行的内容,打印每行内容的首字母要求大写。
分析:文件读取,并处理文件内容,首字母大写函数capitalize(),字符串去空strip()
def file_handle(filename):
# 实现一
# file = open(filename, 'r')
# for line in file.readlines():
# print(line.strip().capitalize())
# file.close()
# 实现二
with open(filename, 'r') as file:
for line in file:
print(line.strip().capitalize())
file_handle("text.txt")
五、生成一个字典,将字典内容写入到一个csv文件之中,首先生成csv文件首行的表头,再将字典中的内容写入到表头对应的列。
分析:
1、csv文件写入,导入包csv ,csv.DictWriter(csvfile, fieldnames=headers)
2、针对单字典或者列表字典,选择指定字典的keys()作为csv文件的表头
3、csv写入文件,writeheader()写入表头,writerow()写入一行数据,writerows()写入多行数据
4、newline=‘’,避免写入空行;含中文时指定encoding='utf-8-sig'进行编码处理
import csv
def dict_handle(dct, file):
# 键作为表头
headers = dct.keys()
# 写入csv文件
with open(file, 'w', newline='', encoding='utf-8-sig') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=headers)
writer.writeheader()
writer.writerow(dct) # 写入一行数据
def list_dict_handle(lst, file):
# 获取表头
headers = lst[0].keys()
# 写入csv文件
with open(file, 'w', newline='', encoding='utf-8-sig') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=headers)
writer.writeheader()
writer.writerows(lst) # 写入多行数据
if __name__ == "__main__":
# 写入字典,单行数据
# sample_dict = {"姓名": "张三","年龄": 25,"城市": "北京","职业": "工程师"}
# dict_handle(sample_dict, "output.csv")
# 写入字典列表,多行数据
sample_dict = [
{"姓名": "张三","年龄": 25,"城市": "北京","职业": "工程师"},
{"姓名": "王五","年龄": 31,"城市": "深圳","职业": "设计师"}
]
list_dict_handle(sample_dict, "output.csv")
print("字典已成功写入output.csv文件")
2万+

被折叠的 条评论
为什么被折叠?



