-1

我有 2 个默认值(列表);其中一个只显示数字,另一个包含整行文本。

我有 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

可以有许多不同的方法来做到这一点。以下是一种简单的方法

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 回答