通过通用标识符对Python中的两个列表进行交叉标识(重叠)

我有两个列表对,每个对由一个标识符列表和一个值列表组成,其中a和b的长度不同。例如:


a_id = [1, 2, 4, 5, 9, 12, 13]

a_val = [13., 32., 5., 9., 32., 4., 8.]

b_id = [1, 3, 4, 6, 9]

b_val = [12., 27., 1., 3., 19.]

现在,我需要知道与同一个id对应的值,而我只需要那些在a和b中具有值的值。对于此示例,我想获取常见ID和相应值的列表:


common_id = [1, 4, 9]

common_a_val = [13., 5., 32.]

common_b_val = [12., 1., 19.]

最好/最快的方法是什么?


尚方宝剑之说
浏览 197回答 3
3回答

阿波罗的战车

>>> common_id = [i for i in a_id if i in b_id]>>> common_id[1, 4, 9]>>> common_a_val = [a_val[a_id.index(i)] for i in common_id]>>> common_a_val[13.0, 5.0, 32.0]>>> common_b_val = [b_val[b_id.index(i)] for i in common_id]>>> common_b_val[12.0, 1.0, 19.0]

哈士奇WWW

>>> a_d = dict(zip(a_id,a_val))>>> b_d = dict(zip(b_id,b_val))>>> common_ids = a_d.viewkeys() & b_d.viewkeys()set([1, 4, 9])>>> common_a_val = [a_d[key] for key in common_ids][13.0, 5.0, 32.0]>>> common_b_val = [b_d[key] for key in common_ids][12.0, 1.0, 19.0]

不负相思意

def common_elements(list1, list2):   return [element for element in list1 if element in list2]a_id = [1, 2, 4, 5, 9, 12, 13]a_val = [13., 32., 5., 9., 32., 4., 8.]b_id = [1, 3, 4, 6, 9]b_val = [12., 27., 1., 3., 19.]common_a_val=[];common_b_val=[]common_id=common_elements(a_id,b_id)for i in common_id:    common_a_val.append(a_val[a_id.index(i)])    common_b_val.append(b_val[b_id.index(i)])print common_id,common_a_val,common_b_val它的输出是: [1, 4, 9] [13.0, 5.0, 32.0] [12.0, 1.0, 19.0]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python