如何正確合并以從此陣列中獲取:
x = [[0,"TEXT1",1,2],[0,"TEXT2",3,4],[0,"TEXT3",6,7],[1,"TEXT4",10,12],[1,"TEXT5",13,14],[1,"TEXT6",16,17],[0,"TEXT7",18,19]]
x[0][0] = User number
x[0][1] = Word
x[0][2] = Time FROM
x[0][3] = Time To
我需要的是得到這樣的東西:
User 0: TEXT1 TEXT2 TEXT3 From 1 to 7
User 1: TEXT4 TEXT5 TEXT6 From 10 to 17
User 0: TEXT7 From 18 to 19
最有效的方法是什么?
- 由于我創建大量子陣列然后將所有子陣列組合在一起的想法看起來像糟糕的編碼......
額外說明:
在陣列內部,我們可以看到這些元素 - [0,"TEXT1",1,2]
- 0 = 用戶 ID
- TEXT1 = 用戶 0 所說的詞
- 1 = 在第 1 秒開始說
- 2 秒 2 說完
然后過了一會兒我們可以看到—— [1,"TEXT4",10,12]
- 這與之前相同,但在這里我們可以看到用戶(ID 為 1)開始說話
uj5u.com熱心網友回復:
這是使用的解決方案itertools.groupby:
對于每個組(它是用戶元素的序列),我們取所有單詞,最小的“from”和最大的“to”。
from itertools import groupby
from operator import itemgetter
x = [[0,"TEXT1",1,2],[0,"TEXT2",3,4],[0,"TEXT3",6,7],[1,"TEXT4",10,12],[1,"TEXT5",13,14],[1,"TEXT6",16,17],[0,"TEXT7",18,19]]
result = []
for k,g in groupby(x, key=itemgetter(0)):
ks, words, froms, tos = zip(*g)
result.append([k, words, min(froms), max(tos)])
print(result)
它以結構方式提供輸出,列印它以與您的輸出完全匹配應該很容易。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/388945.html
