【发布时间】:2021-04-21 13:17:02
【问题描述】:
如果列表(这只是顶部的一些行),我有一个很大的列表:
['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)
我已经尝试了列表理解和连接,但您似乎无法连接函数。我能够返回仅包含转换值(整数)的列表,但无法将其添加到初始列表中。
【问题讨论】:
-
您实际上似乎在您的示例中插入了一个 int 与转换。是哪个?
-
所以你说你的函数工作正常,你只是不知道如何使用它来返回添加整数的列表?如果是这样,为什么不分享你的尝试呢?
-
很抱歉给您带来了困惑。该函数可以很好地进行转换,并将返回罗马数字的相应 int。我的问题在于返回添加了 int 列的初始列表。我试过: for row in lst: map(roman_to_int(row), list) 另外: lst = [[row[:2] + roman_to_int(row[1]) + row[3:] for row in matches]]