2012-08-24 38 views
-1

我有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', '多態性', 'rs296091', ' - '。

+1

你的代碼是否工作?如果不是,爲什麼不呢?舉例說明。 http://sscce.org/ – Marcin

+0

@Marcin我不知道如何使用if語句來測試它。這段代碼給了我一個包含int和string的列表。 –

+0

你的評論與我在評論中提到的所有信息都不一樣。另外,請閱讀詳細的鏈接。 – Marcin

回答

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

+0

謝謝@mgilson :) –

相關問題