簡體   English   中英

Python嵌套列表連接查找引用列表

[英]Python nested lists join lookup reference list

python的新手,如果這是微不足道的話,請道歉。 我有一份清單

list = [3,1,0,2]

和嵌套查找

lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]

我需要將“list”中的每個元素與“lookup”中的每個對應元素索引匹配,並從“lookup”返回該元素的值。 結果應該是:

result = [
[28,82,158],
[225,302,191],
[265,301,201],
[225,35,134]
]

您可以使用列表理解:

result = [lookup[i] for i in list]

(請注意,您不應該調用變量list 。它會影響同名內置函數,並且遲早會導致意外的行為。)

常規列表comp和索引:

lst = [3,1,0,2]

print([lookup[i] for i in lst])
[[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]

或者使用__getitem__的功能方法:

lst = [3,1,0,2]


lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]

print(list(map(lookup.__getitem__, lst)))

[[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]

使用operator.itemgetter

lst = [3,1,0,2]


lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]
from operator import itemgetter

print(list(itemgetter(*lst)(lookup)))
 [[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]

你也可以使用map和lambda:

>>> lst = [3, 1, 0, 2]
>>> lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]
>>> map(lambda x:lookup[x], lst)
[[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]

暫無
暫無

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

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