0

2 つのリストがあります。1 つは数字のみを含み、もう 1 つは文字列を含みます。例えば:

listA = [ 3, 4, 5, 7]

listB = ["Z2 O95409 V595 **p.His3Leu** Dase - Hophaly type 5 (HPE5) [609637]", "Z2 O95409 V595 **p.His4Leu** Dase - Hophaly type 5 (HPE5) [609637]", "Z2 O95409 V595 **p.His5Leu** Dase - Hophaly type 5 (HPE5) [609637]", "Z2 O95409 V595 **p.His7Leu** Dase - Hophaly type 5 (HPE5) [609637]" ]

listA の数字と listB の太字の単語を一致させたい。最終的に、listA の番号を使用する場合、listB の文字列全体を出力したいと考えています。たとえば、listA で番号 3 を使用する場合、これも出力したいと思います。Z2 O95409 V595 **p.His3Leu** Dase - Hophaly type 5 (HPE5) [609637]

4

3 に答える 3

4

辞書のように?使用zip:

listAtoB = dict(zip(listA, listB))

listAtoB[3] # Z2 O95409 V595 **p.His3Leu** Dase - Hophaly type 5 (HPE5) [609637]
于 2012-08-29T00:08:09.407 に答える
2

このようなもの?

listA = [ 3, 4, 5, 7]
ListB = ["Z2 O95409 V595 p.His3Leu Dase - Hophaly type 5 (HPE5) [609637]", "Z2 O95409 V595 p.His4Leu Dase - Hophaly type 5 (HPE5) [609637]", "Z2 O95409 V595 p.His5Leu Dase - Hophaly type 5 (HPE5) [609637]", "Z2 O95409 V595 p.His7Leu Dase - Hophaly type 5 (HPE5) [609637]"]
for x in listA:
    for y in ListB:
        if y[y.index("p.His")+5]==str(x): #if x in "p.HisxLeu"
            print x,y

または使用filter()

for x in listA:
    for y in filter(lambda z:z[z.index("p.His")+5]==str(x),ListB):
        print x,y

出力:

3 Z2 O95409 V595 p.His3Leu Dase - Hophaly type 5 (HPE5) [609637]
4 Z2 O95409 V595 p.His4Leu Dase - Hophaly type 5 (HPE5) [609637]
5 Z2 O95409 V595 p.His5Leu Dase - Hophaly type 5 (HPE5) [609637]
7 Z2 O95409 V595 p.His7Leu Dase - Hophaly type 5 (HPE5) [609637]
于 2012-08-29T00:09:54.827 に答える
1

listA の項目を ListB の項目にマップするディクショナリを作成するのは簡単です。Python >= 2.7 を使用している場合は、辞書内包表記を使用できます (そうでない場合は、dict同じことを達成するために使用する他の回答を参照してください)。

listA = [ 3, 4, 5, 7]
ListB = ['Z2 O95409 V595 **p.His3Leu** Dase - Hophaly type 5 (HPE5) [609637]', 'Z2 O95409 V595 **p.His4Leu** Dase - Hophaly type 5 (HPE5) [609637]', 'Z2 O95409 V595 **p.His5Leu** Dase - Hophaly type 5 (HPE5) [609637]', 'Z2 O95409 V595 **p.His7Leu** Dase - Hophaly type 5 (HPE5) [609637]' ]

d = { a:b for a, b in zip(listA, ListB) }
from pprint import pprint
pprint(d)
{3: 'Z2 O95409 V595 **p.His3Leu** Dase - Hophaly type 5 (HPE5) [609637]',
 4: 'Z2 O95409 V595 **p.His4Leu** Dase - Hophaly type 5 (HPE5) [609637]',
 5: 'Z2 O95409 V595 **p.His5Leu** Dase - Hophaly type 5 (HPE5) [609637]',
 7: 'Z2 O95409 V595 **p.His7Leu** Dase - Hophaly type 5 (HPE5) [609637]'}

ただし、あなたの要件を考慮して、タンパク質名とその完全な説明を参照できる辞書の辞書を提案します.

d = { a: {'protein': b.split('**')[1], 'description': b} for a, b in zip(listA, ListB) }
pprint(d)
{3: {'description': 'Z2 O95409 V595 **p.His3Leu** Dase - Hophaly type 5 (HPE5) [609637]',
     'protein': 'p.His3Leu'},
 4: {'description': 'Z2 O95409 V595 **p.His4Leu** Dase - Hophaly type 5 (HPE5) [609637]',
     'protein': 'p.His4Leu'},
 5: {'description': 'Z2 O95409 V595 **p.His5Leu** Dase - Hophaly type 5 (HPE5) [609637]',
     'protein': 'p.His5Leu'},
 7: {'description': 'Z2 O95409 V595 **p.His7Leu** Dase - Hophaly type 5 (HPE5) [609637]',
     'protein': 'p.His7Leu'}}

これで、次のようなルックアップを実行できます。

>>> print d[3]['protein']
p.His3Leu
>>> print d[3]['description']
Z2 O95409 V595 **p.His3Leu** Dase - Hophaly type 5 (HPE5) [609637]
于 2012-08-29T00:30:53.900 に答える