-1

私は2つのデフォルト(リスト)を持っています。そのうちの 1 つは数字のみを表示し、もう 1 つはテキスト行全体を表示します。

私はintのリストを持っています(ルックアップ)

[112, 896, 455, 1164, 1164, 336, 386, 521, 1011, 1033]

および文字列のリスト (説明)

[['ZNF91', 'Q05481', 'VAR_057393', 'p.Tyr112His', 'Polymorphism', 'rs296091', '-'],
 ['ZNF91', 'Q05481', 'VAR_057394', 'p.Thr896Ala', 'Polymorphism', 'rs296093', '-'],...]

プログラムの実行中にチェックするステートメントを考え出そうとしていますif。基本的に、行に一致する番号を使用する場合、その文字列の行を印刷したい、たとえば、最初の行に一致する番号112を使用する場合(p.Tyr112His)、p.Tyr112His を含む行全体を出力したい。つまり:

「ZNF91」、「Q05481」、「VAR_057393」、「p.Tyr112His」、「ポリモーフィズム」、「rs296091」、「-」。

4

2 に答える 2

2

この質問の改訂履歴を見ると、csv ファイルを繰り返し処理しながら、整数のリストと文字列のリストを同時に作成しているようです。その場合は、少し異なるデータ構造を検討することをお勧めします。

data = defaultdict(list)
with open(csvfile) as f:
    reader = csv.reader(f)
    for line in reader:
        number = ...  #parse the number from the line here
        data[number].append(line)

番号 112 を含むすべての行にアクセスしたい場合は、次のようにします。

for line in data[112]:
   print (line)

数値のリストが必要な場合は、簡単に取得できます list(data.keys())(または、data.keys()python 2.x を使用している場合)。

于 2012-08-24T19:00:12.813 に答える
1

それにはさまざまな方法があります。以下は、1 つの簡単なアプローチです。

list_of_ints=[112, 896, 455, 1164, 1164, 336, 386, 521, 1011, 1033]
list_of_strings=[['ZNF91', 'Q05481', 'VAR_057393', 'p.Tyr112His', 'Polymorphism', 'rs296091', '-'],
 ['ZNF91', 'Q05481', 'VAR_057394', 'p.Thr896Ala', 'Polymorphism', 'rs296093', '-']]
for ints in list_of_ints:
    for st in list_of_strings:
        if str(ints) in ','.join(st):
            print st


['ZNF91', 'Q05481', 'VAR_057393', 'p.Tyr112His', 'Polymorphism', 'rs296091', '-']
['ZNF91', 'Q05481', 'VAR_057394', 'p.Thr896Ala', 'Polymorphism', 'rs296093', '-']
于 2012-08-24T18:56:49.190 に答える