如何将dict中嵌套列表的每个元素转换为int?

时间:2017-04-24 08:52:57

标签: python list csv dictionary int

所以我有一个带CSV的函数并将其转换为字典。

代码:

import io

opened_statcsv = io.StringIO('''"ID","HP","Attack","Defense","Speed"
6,78,84,78,100
146,90,100,90,90
643,100,120,100,90
''')

def read_stats_file(filename):
    sdb={}

    #opened_statcsv = open(filename, 'r')
    stat_string = opened_statcsv.readlines()

    for i in range(1,len(stat_string)):
        splitline=stat_string[i].replace("\n",'').split(',')

        sdb[splitline[0]] = splitline[1],splitline[2],splitline[3],splitline[4]
    print(sdb)

read_stats_file('stats_file2.csv')

目前,我可以创建一个问题的字典:每个数字都有引号。

例如,我现在的输出是:{'6':('78','84','78','100'),'643':('100','120','100 ','90')}

应该是:{6:(78,84,78,100),643:(100,120,100,90)}

有没有办法在构建字典之前将所有这些值转换为整数(因为它们之后变成了不可变的元组)?

我不允许导入CSV或地图,建议避免使用.strip或.replace。

2 个答案:

答案 0 :(得分:1)

在这种情况下,我会建议map功能

for i in range(1,len(stat_string)):
    splitline=map(int, stat_string[i].replace("\n",'').split(','))

    sdb[splitline[0]] = splitline[1],splitline[2],splitline[3],splitline[4]

答案 1 :(得分:0)

正如评论中所建议的那样尝试:

for i in range(1,len(stat_string)):
    splitline=stat_string[i].replace("\n",'').split(',')

    sdb[int(splitline[0])) = ( int(splitline[1]),int(splitline[2]),int(splitline[3]),int(splitline[4] )