簡體   English   中英

如何將字典中嵌套列表的每個元素轉換為int?

[英]How do I convert every element of a nested list in a dict into an 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)}

有沒有辦法在構建字典之前將所有這些值轉換為int(因為在此之后它們將成為不可變的元組)?

我不允許導入CSV或地圖,建議避免使用.strip或.replace。

在這種情況下,我會建議地圖功能

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]

如評論中所建議,請嘗試:

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] )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM