数组orgList为[ "148#148#34", "148#148#33", "148#148#32", "140#141#25", "140#141#24", "149#149#38", "149#149#37", "149#149#36" ]数据为"objectId#deviceId#itemId";根据#截取数组[objectId,deviceId, itemId], 怎么通过es语法处理能获取新数组newList为 [{objectId: '148', itemIds:[32,33,34]}, {objectId: '149', itemIds:[36,37,38]}, {objectId: '141', itemIds:[24,25]}]
时间: 2023-12-07 17:04:42 浏览: 87
JavaScript数组、json对象、eval()函数用法实例分析
你可以使用以下代码来处理orgList数组并生成newList数组:
```python
import re
orgList = [
"148#148#34",
"148#148#33",
"148#148#32",
"140#141#25",
"140#141#24",
"149#149#38",
"149#149#37",
"149#149#36"
]
newList = []
# 创建一个字典来存储每个objectId对应的itemIds列表
object_dict = {}
for item in orgList:
objectId, deviceId, itemId = re.split("#", item)
# 检查objectId是否已存在于字典中
if objectId in object_dict:
# 如果存在,则将itemId添加到对应的itemIds列表中
object_dict[objectId].append(int(itemId))
else:
# 如果不存在,则创建一个新的键值对
object_dict[objectId] = [int(itemId)]
# 将字典转换为所需的格式
for objectId, itemIds in object_dict.items():
newList.append({
"objectId": objectId,
"itemIds": sorted(itemIds, reverse=True)
})
print(newList)
```
这段代码首先导入了re模块,然后定义了orgList数组。接下来,我们创建了一个空列表newList用于存储最终的结果。
然后,我们创建了一个空字典object_dict来存储每个objectId对应的itemIds列表。接下来,我们遍历orgList数组中的每个元素,使用re.split("#", item)来将每个元素按照"#"进行拆分,得到objectId、deviceId和itemId。
然后,我们检查objectId是否已存在于object_dict字典中。如果存在,我们将itemId添加到对应的itemIds列表中。如果不存在,我们创建一个新的键值对,键为objectId,值为一个包含当前itemId的列表。
最后,我们将object_dict字典转换为所需的格式,并按照itemId的降序进行排序。最终结果存储在newList列表中。
输出结果为:
```python
[
{'objectId': '148', 'itemIds': [34, 33, 32]},
{'objectId': '140', 'itemIds': [25, 24]},
{'objectId': '149', 'itemIds': [38, 37, 36]}
]
```
阅读全文