簡體   English   中英

如何在python中映射列表

[英]How to map list in python

我下面有2個清單

Token_Sentence=[['This','is','a','book'],['This','is','a','cat'],['Those','are','two','books']]
Mapping=[['This',1],['is',2],['a',3],['book',4],['cat',5],['Those',6],['are',7],['two',8],['books',9]]

我想這樣映射Token_Sentence(將文本轉換為索引號)

[[1,2,3,4],[1,2,3,5],[6,7,8,9]]

這是我的代碼

for a in range(len(Token_Sentence)):
    for b in range(len(Token_Sentence[a])):
        for c in range(len(Mapping)):
            if Token_Sentence[a][b]==Mapping[c][0]:
                Token_Sentence[a][b]=Mapping[c][1]

但是問題是運行時間很長(我的真實數據列表很大)。

還有其他比我更快,更簡單的方法來實現我的目標嗎?

您可以從Mapping創建Mapping

Token_Sentence=[['This','is','a','book'],['This','is','a','cat'],['Those','are','two','books']]
Mapping=[['This',1],['is',2],['a',3],['book',4],['cat',5],['Those',6],['are',7],['two',8],['books',9]]
d = dict(Mapping)
new_sentence = [[d[b] for b in i] for i in Token_Sentence]

輸出:

[[1, 2, 3, 4], [1, 2, 3, 5], [6, 7, 8, 9]

上面的答案是很好的,只想展示是否不需要轉換為dict:

Token_Sentence=[['This','is','a','book'],['This','is','a','cat'],['Those','are','two','books']]
Mapping=[['This',1],['is',2],['a',3],['book',4],['cat',5],['Those',6],['are',7],['two',8],['books',9]]

print([[k[1] for j in i for k in Mapping if j==k[0]] for i in Token_Sentence ])

輸出:

[[1, 2, 3, 4], [1, 2, 3, 5], [6, 7, 8, 9]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM