从具有相同键的元素列出

时间:2017-10-24 12:27:10

标签: list list-comprehension

我有两个长度相同的列表(一个键一个值):

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]

2 个答案:

答案 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'))