0

ベースリストがあります。

li = ['fca', 'fc_add', 'fca_2', 'fcadd_2', 'Red_Exis', 'G_Exis', 'P_Exis',
      'fam_1']

リスト内のアイテムのインデックス位置を使用して、次のタプルのリストを並べ替えます。

tup= [('G_Exis','abc'), ('fca','210Y'), ('Red_Exis', 107),
      ('fc_add','999 Des ST.')]

次のように最終的にソートされたリストが必要です。

fin_tup = [('fca','210Y'), ('fc_add','999 Des ST.'), ('Red_Exis', 107), 
           ('G_Exis','abc')]
4

3 に答える 3

1
index_dict = {item: index for index, item in enumerate(li)}
tup.sort(key=lambda t: index_dict[t[0]])
print(tup)

出力

[('fca', '210Y'), ('fc_add', '999 Des ST.'), ('Red_Exis', 107),
 ('G_Exis', 'abc')]

または並べ替えなし:

index_dict = {item: index for index, item in enumerate(li)}

fin_tup = [None]*len(li)
for t in tup:
    fin_tup[index_dict[t[0]]] = t
fin_tup = [t for t in fin_tup if t is not None]
于 2013-02-02T08:39:34.163 に答える
0

これを行う簡単な方法は、実際に並べ替えるのではなく、辞書のキーとして並べ替えるキーのインデックスを使用して辞書に保存することです。

>>> d ={}
>>> for i in tup : d[li.index(i[0])] = i
>>> list(d.values())
[('fca', '210Y'), ('fc_add', '999 Des ST.'), ('Red_Exis', 107), ('G_Exis', 'abc')]

これは効率的な方法ではなく、簡単な方法です。

于 2013-02-02T08:28:35.780 に答える