我有一个像这样的二维数组:
list_of_data =
[['Joe', 4, 'MSP', 4, 5, 'cabbage', None],
['Joe', 43, '2TM', 41, 53, 'cabbage', None],
['Joe', 24, 'MSP', 44, 55, 'cabbage', None],
['Joe', 54, 'MIA', 42, 85, 'cabbage', None],
['Tom', 7, '2TM', 4, 52, 'cabbage', None],
['Tom', 4, 'LAX', 43, 52, 'cabbage', None],
['Tom', 4, 'MCO', 4, 5, 'cabbage', None],
['Fred', 4, '2TM', 4, 5, 6, 'cabbage'],
['Fred', 4, 'LAG', 4, 5, 6, 'cabbage'],
['Fred', 4, 'ITH', 4, 5, 6, 'cabbage']]这个问题是关于在第二个索引处包含值'2TM‘的行/索引。例如:
在他的数据的第二次出现中,Joe在索引2处具有值'2TM‘。在他的数据第一次出现时,Tom在索引2处的值为'2TM‘。在他的数据第一次出现时,Fred在索引2处的值为'2TM‘。
每次值'2TM‘出现在数据中时,我想用下两行中相同索引处的值替换'2TM’,用连字符分隔。上面的示例如下所示:
list_of_data =
[['Joe', 4, 'MSP', 4, 5, 'cabbage', None],
['Joe', 43, 'MSP-MIA', 41, 53, 'cabbage', None],
['Joe', 24, 'MSP', 44, 55, 'cabbage', None],
['Joe', 54, 'MIA', 42, 85, 'cabbage', None],
['Tom', 7, 'LAX-MCO', 4, 52, 'cabbage', None],
['Tom', 4, 'LAX', 43, 52, 'cabbage', None],
['Tom', 4, 'MCO', 4, 5, 'cabbage', None],
['Fred', 4, 'LAG-ITH', 4, 5, 6, 'cabbage'],
['Fred', 4, 'LAG', 4, 5, 6, 'cabbage'],
['Fred', 4, 'ITH', 4, 5, 6, 'cabbage']]我已经试过用替换了。方法来获取可能接近正确代码的内容:
x=0
for row in list_of_data:
if '2TM' in row:
list_of_data.replace(list_of_data[2], list_of_data[x+1 + x+2])
x+=1这将产生错误消息:
AttributeError: 'list' object has no attribute 'replace'发布于 2017-08-31 00:21:21
我想这样就行了:
list_of_data = [['Joe', 4, 'MSP', 4, 5, 'cabbage', None],
['Joe', 43, '2TM', 41, 53, 'cabbage', None],
['Joe', 24, 'MSP', 44, 55, 'cabbage', None],
['Joe', 54, 'MIA', 42, 85, 'cabbage', None],
['Tom', 7, '2TM', 4, 52, 'cabbage', None],
['Tom', 4, 'LAX', 43, 52, 'cabbage', None],
['Tom', 4, 'MCO', 4, 5, 'cabbage', None],
['Fred', 4, '2TM', 4, 5, 6, 'cabbage'],
['Fred', 4, 'LAG', 4, 5, 6, 'cabbage'],
['Fred', 4, 'ITH', 4, 5, 6, 'cabbage']]
for i in range(len(list_of_data)):
if list_of_data[i][2] == '2TM':
list_of_data[i][2] = list_of_data[i+1][2] + '-' + list_of_data[i+2][2]
print(list_of_data)输出:
[['Joe', 4, 'MSP', 4, 5, 'cabbage', None], ['Joe', 43, 'MSP-MIA', 41, 53, 'cabbage', None], ['Joe', 24, 'MSP', 44, 55, 'cabbage', None], ['Joe', 54, 'MIA', 42, 85, 'cabbage', None], ['Tom', 7, 'LAX-MCO', 4, 52, 'cabbage', None], ['Tom', 4, 'LAX', 43, 52, 'cabbage', None], ['Tom', 4, 'MCO', 4, 5, 'cabbage', None], ['Fred', 4, 'LAG-ITH', 4, 5, 6, 'cabbage'], ['Fred', 4, 'LAG', 4, 5, 6, 'cabbage'], ['Fred', 4, 'ITH', 4, 5, 6, 'cabbage']]发布于 2017-08-31 00:33:03
列表没有替换功能。
试试这个:
for row in list_of_data:
if '2tm' in row:
id = list_of_data.index('2tm')
next_i = id + 1;
next_again = id + 2;
list_of_data[id] = list_of_data[next_i] + '-' + list_of_data[next_again]https://stackoverflow.com/questions/45965231
复制相似问题