将罗马数字转换为列表列表中的整数

Converting roman numerals to integers in a list of lists

我有一个很大的列表 if 列表(这只是一些最上面的行):

['001-008  I', 'I', 'Enfermedades infecciosas y parasitarias', 2018, 6.398]
['001-008  I', 'I', 'Enfermedades infecciosas y parasitarias', 2017, 6.819]

并且想要应用一个函数,我必须将第二列转换为整数并将其添加到第二列后面,以便输出如下所示(不要介意最后两列):

['001-008 I', 'I', 1, 'Enfermedades infecciosas y parasitarias', 1984, 3232]
['001-008 I', 'I', 1, 'Enfermedades infecciosas y parasitarias', 1992, 16]

我之前写的函数是:

def roman_to_int(r):
    rom_vals = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000} 
    result = 0 
    for i,c in enumerate(r):
        if (i+1) == len(r) or rom_vals[c] >= rom_vals[r[i+1]]: 
            result += rom_vals[c]
        else:
            result -= rom_vals[c]
    return(result)

我已经尝试了列表理解和串联,但您似乎无法串联函数。我能够 return 仅包含转换值(整数)的列表,但无法将其添加到初始列表中。

使用 insert():

lst = [['001-008  I', 'I', 'Enfermedades infecciosas y parasitarias', 2018, 6.398],
       ['001-008  I', 'I', 'Enfermedades infecciosas y parasitarias', 2017, 6.819],
       ...]

for row in lst:
    row.insert(2, roman_to_int(row[1])) # changed here