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

2024-05-18 07:13:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有int列表(查找)

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

和字符串列表(说明)

^{pr2}$

我试图在运行程序时使用if语句进行检查,基本上,当我使用与行匹配的数字时,我想打印该字符串的行,例如,如果我使用与第一行(p.Tyr112His)匹配的数字112,我希望它打印包含p.Tyr112His的整行;这是:

'ZNF91', 'Q05481', 'VAR_057393', 'p.Tyr112His', 'Polymorphism', 'rs296091', '-'.


Tags: 字符串文本程序列表ifvar数字语句
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的所有行,只需执行以下操作:

^{pr2}$

如果您需要数字列表,可以很容易地得到:list(data.keys())(如果您使用的是python2.x,则只需data.keys()

有很多不同的方法可以做到这一点。下面是一个简单的方法

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

相关问题 更多 >