繁体   English   中英

从str> float> int转换CSV信息,然后将其分配给字典中的值

[英]Converting CSV information from str > float > int then assigning it to a value in a dictionary

当前代码...

import csv
import itertools

students = {}
def studentGradeCSV():
    with open('/Users/home/Downloads/gradebook-export.csv') as csvfile:
        reader = csv.DictReader(csvfile)
        global students
        students = {}
        for row in reader:
            name = row['Last Name'] + ', ' + row['First Name']
            grade = row['Overall']
            new_grade = []
            for g in grade:
                try:
                    v = int(float(g))
                    new_grade.append(v)
                except ValueError:
                    new_grade.append(g)
            for n, gr in itertools.product(name, new_grade):
                students[n] = gr

'等级'索引的示例-'N / A','92.13','100','87.2','91','0'

“等级”变量是字符串。 我想先将它们转换为整数,然后再将它们作为键值分配给'name'变量中的值。 我以前已经能够将'grade'int密钥转换为名称值,但是它们的分配不正确,因为字典无法正确地抓住它们。

不确定从这里去哪里??

不知道为什么要对单个值使用for循环:

    name = row['Last Name'] + ', ' + row['First Name']
    grade = row['Overall']
    try:
        grade = int(float(grade))
    except ValueError:
        pass
    students[name] = grade

您的for循环和itertools.product将字符串视为字符序列,例如

for g in 'N/A':

将产生new_grade = ['N', '/', 'A']
然后:

itertools.product("Name", ['N', '/', 'A']

产生序列('N', 'N'), ('N', '/'), ('N', 'A'), ('a', 'N'), ...你在看什么

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM