Python 如何检测列表项的特定值何时更改,并通过与相应项的映射将索引捕获到字典中

Python 如何检测列表项的特定值何时更改,并通过与相应项的映射将索引捕获到字典中,python,Python,我的清单如下: ['24', '24', '24', '24', '24', '1D', '1D', '1D', **'1D'**, **'24'**, '24', '24', '1D', '1D','24','24'] 我希望检测项目何时从'1D'更改为'24',并将项目映射到相应的索引 如本例所示,输出应如下所示: {“1d”:[8,13],“24”:[9,14]}这就是你想要的吗 A = ['24', '24', '24', '24', '24', '1D', '1D', '1D', '

我的清单如下:

['24', '24', '24', '24', '24', '1D', '1D', '1D', **'1D'**, **'24'**, '24', '24', '1D', '1D','24','24']
我希望检测项目何时从
'1D'
更改为
'24'
,并将项目映射到相应的索引

如本例所示,输出应如下所示:
{“1d”:[8,13],“24”:[9,14]}

这就是你想要的吗

A = ['24', '24', '24', '24', '24', '1D', '1D', '1D', '1D', '24', '24', '24', '1D', '1D','24','24']
res = [[A[i], A[i + 1]] for i in range(len(A) - 1)] 
B = [index for index, value in enumerate(res) if value == ['1D','24']]
B
[8, 13] # feel free to add 1 if want to shift it to the second element position.
编辑: 解决方案使用:

更多阅读资料:


谢谢@s.k。我还需要索引值8,9,13,14,并将该值映射到它们的索引,如{1d:[8,13],24:[9,14]}您最好改进您的问题,以全面地包含此功能。;-)我已经更新了问题@s.k
import numpy as np
A = ['24', '24', '24', '24', '24', '1D', '1D', '1D', '1D', '24', '24', '24', '1D', '1D','24','24']
sequence = ['1D','24']
# get all sequences
res = [[A[i], A[i + 1]] for i in range(len(A) - 1)]
# find index of such sequence
B = np.array([[i,i+1] for i, v in enumerate(res) if v == sequence]).T

# create an dict with sequences elements as keys and their 
# values as list of indexes:
mydict = {sequence[i]: list(B[i]) for i in range(len(sequence))} 


>>> mydict
{'1D': [8, 13], '24': [9, 14]}