如何检查字符串列表中的int列表?

时间:2012-08-24 18:37:47

标签: python

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

我有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',' Polymorphism', ' rs296091',' - '。

2 个答案:

答案 0 :(得分: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())(如果您使用的是python 2.x,则只需data.keys()

答案 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', '-']