[英]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.