将罗马数字转换为列表列表中的整数
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
我有一个很大的列表 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