总结:主要用了pandas的to_csv()的方法来写入csv。

先将字典转换成 DataFrame类型数据,然后使用DataFrame.to_csv()即可完成存储。

例:

List1 = {'学号': [6812, 6952, 6905], '姓名': ['一', '二', '三'], '排名': [1, 6, 9]}
df = pd.DataFrame(List1, index=range(0, 3))
df.to_csv('last.csv', index=False, encoding='gbk')

结果:

python如何将字典写入文件 python将字典写入csv文件_数据

2、列表存入csv

之前的需求:

import pandas as pd

data = pd.read_csv('newdata.csv', encoding='utf-8')  # 含有成绩等的数据,但是没有班级信息
stu_class = pd.read_csv('班级.csv', encoding='utf-8')  # 仅含有班级和姓名的数据
dic = {}
score_index = 0  # 包含学生成绩的数据索引
class_index = -1  # 包含学生班级的数据索引
for name in stu_class['姓名']:
    class_index += 1
    for stu_score in data['姓名']:
        if score_index == len(data):
            score_index = 0
            break
        elif name != stu_score:
            score_index += 1
            continue
        elif name == stu_score:
            # 这里需要特别注意:班级跟成绩不是同一个index
            dic[name] = (stu_class['班级'][class_index][6:7], data['体测成绩'][score_index], data['学年平均学分绩点'][score_index], data['综合测评总分排名'][score_index], data['综合测评总分(百分制、精确到小数点后4位)'][score_index], data['学业成绩考核排名'][score_index])
            score_index = 0
            break
        else:
            pass
'''
说明:存储到csv文件中时,必须是数据框类型的数据才有to_csv的函数!且columns对应的数据必须是一个列表
'''
last_class = list()
last_pe = list()
last_gpa = list()
last_rank = list()
last_score = list()
last_gpa_rank = list()
for name in stu_class['姓名']:    # 要追加而不是覆盖
    try:
        last_class.append(dic[name][0])
        last_pe.append(dic[name][1])
        last_gpa.append(dic[name][2])
        last_rank.append(dic[name][3])
        last_score.append(dic[name][4])
        last_gpa_rank.append(dic[name][5])
    except KeyError:  # 部分名字没有对应的数据,那么try、except后,无数据的名字就会跳过了
        pass

last = pd.DataFrame()
last['姓名'] = list(dic.keys())
last['班级'] = last_class
last['体测'] = last_pe
last['绩点'] = last_gpa
last['绩点排名'] = last_gpa_rank
last['综测得分'] = last_score
last['综测排名'] = last_rank

result = pd.DataFrame(last, columns=['姓名', '班级', '体测', '绩点', '绩点排名', '综测得分', '综测排名'])
result.to_csv('最终文件.csv', index=False, encoding='gbk')