我有两个长度相同的列表(一个键一个值):
keys_list = ['a', 'a', 'a', 'b', 'b', 'c', 'd' ... 'z']
values_list = [1 ,2 ,4, 5, 6, 7, 11 ... 213]
如何从分配给同一密钥的值列表中获取?
即G。对于' a':[1, 2, 4]
答案 0 :(得分:3)
像这样:
>>> [values_list[i] for i,key in enumerate(keys_list) if key=='a']
[1, 2, 4]
答案 1 :(得分:0)
使用itertools.compress
:
from itertools import compress
list(compress(values_list, [i=='a' for i in keys_list]))
# [1, 2, 4]
或者用过滤器替换列表理解:
list(compress(values_list, filter(lambda x: x=='a', keys_list)))
最后纳入NumPy:
import numpy as np
list(compress(values_list, np.array(keys_list)=='a'))