1

2 つのリストのペアがあり、それぞれが識別子のリストと値のリストで構成されています。ここで、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.]

それを達成するための最良/最速の方法は何ですか?

4

3 に答える 3

2
>>> 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]
于 2013-06-27T12:27:53.207 に答える
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]
于 2013-06-27T12:32:15.750 に答える