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]}