我有一个巨大的电子表格,正在尝试搜索某些特定数据。
一方面我有这样的ID:
Y00988-11
G01024-14
Z01933-13
另一方面,我有一个大型电子表格(CSV),格式如下:
Run,Sample,Source,Rate,
DFT,G01024-14,A,High
DFT,U04424-15,B,Low
TFF,T64673-18,A,Low
RRT,I01324-14,A,High
RRT,J01624-14,A,High
...
我正在尝试提取感兴趣的ID的“ Sample
”和“ Run
”。
我使用内置的阅读器将csv电子表格读入了Dictionary,但是我在提取我感兴趣的元素时遇到了麻烦。
import csv
import sys
# IDs of interest
dataset=sys.argv[1]
# CSV spreadsheet
database=sys.argv[2]
sampleIDs=[]
with open(dataset, 'r') as file:
for line in file:
line.strip('\n')
sampleIDs.append(line)
file.close()
seq_Dict=[]
finalList=['init']
with open(database, 'rb') as csvfile:
reader=csv.DictReader(csvfile, delimiter=',')
for line in reader:
seq_Dict.append(line)
csvfile.close()
for element in seq_Dict:
for key, value in element.items():
if element['Sample'] in sampleIDs:
finalList.pop()
finalList.append(element['Sample']+" "+element['Run'])
for i in finalList:
print(i)
此脚本返回我sampleID中最后一个ID的信息,因此我可以看到在循环过程中正在覆盖先前的迭代。
所以我使用了deepcopy
,但是那没用。
答案 0 :(得分:1)
使用您提供给我的新信息,这就是为什么您被屏蔽的原因。
for element in seq_Dict:
for key, value in element.items():
if element['Sample'] in sampleIDs:
finalList.pop()
finalList.append(element['Sample']+" "+element['Run'])
在这里finalList.pop()
从数组中删除一个对象而不是添加一个对象,这就是为什么只看到最后一个对象的原因。
同样,这没有用,因为循环for element in seq_Dict:
中没有任何内容。如果您没有触摸for element in seq_Dict:
和key
value
for element in seq_Dict:
for key, value in element.items():
if element['Sample'] in sampleIDs:
最后,这是我建议您使用的最后一个版本。
for element in seq_Dict:
if element['Sample'] in sampleIDs:
finalList.append(sample +" "+element['Run'])
答案 1 :(得分:1)
尝试:
for element in seq_Dict:
sample = element['Sample']
if sample in sampleIDs:
finalList.append(sample +" "+element['Run'])