python - 如何检测列表项的特定值何时更改并通过与相应项的映射将索引捕获到字典中
问题描述
我有一个如下列表:
['24', '24', '24', '24', '24', '1D', '1D', '1D', **'1D'**, **'24'**, '24', '24', '1D', '1D','24','24']
我想检测项目何时从'1D'
to更改,'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.
编辑:
使用numpy的解决方案:
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]}
更多阅读:
“列表理解”是什么意思?它是如何工作的,我该如何使用它?
https://www.learnpython.org/en/List_Comprehensions
https://www.geeksforgeeks.org/python-consecutive-elements-pairing-in-list/
...
推荐阅读
- python - 如何使用 lambda 实现计数器?
- java - 我在自定义视图中做错了什么导致它无法在我的可扩展列表视图中呈现(其他视图呈现正常) - Android
- php - 在 Woocommerce 单一产品页面上显示 dokan 供应商名称
- sql - SQL 事件行到列时间戳
- javascript - javascript:包含属于每个银行的客户的对象
- c++ - 在 arm neon 中有效地计算两个不同的数字
- html - 页面没有在 html 和 css 中一直滚动到底部
- java - 从 URL 读取:错误
- java - 如何使用 PDFBox 将 PDF 文件的一部分呈现为图像?
- mysql - 不知道如何 GROUP_BY 我的数据