我有一个文件1有区域信息,像染色体1,从位置1到位置10,看起来像:
chromosome,start_position,end_position
1,1,10
1,11,20
file2的每个位置都有值,比如染色体1上的位置6,有一些值,如下所示:
chromosome,position,value
1,1,value1
1,2,value2
1,6,value3
1,13,value4
我想在file2到file1中添加值,这取决于
在文件2中属于文件1中的任何区域,类似于:
chromosome,start_position,end_position,total_value
1,1,10,value1+value2+value3
1,11,20,value4
这两个文件都可以超过1000万行,我应该通过查看file2的每一行(查看位置是否在file1的任何区域中)或将file1的每一行作为字典(然后在file2中查找值)来实现吗?然后加上?)?你知道吗
我怎样才能得到file1中每一行的“总值”? 谢谢大家!你知道吗
我认为你不一定在寻找最有效的代码,而是一个能完成任务的代码?你知道吗
我将把文件2中的值读入字典,键是
(chromosome, start)
对(假定文件2中的开始和结束总是相同的)。你知道吗然后逐行读取文件1,并在“文件2”字典中找到所有相关值,将结果和附加到行的末尾(可能在新文件中):
我将把其余的实现细节留给您(比如从文件2中获取字典)。它可能会占用大量内存,但希望不会太糟。你知道吗
注意在字典查找中使用
.get()
方法-这将确保字典中未找到的任何键都返回0
。你决定这是否适合你的情况。还要注意使用str
和int
在文本和数字之间进行转换。您可以根据您的实现来决定这是否合适。你知道吗另外,如果您以前没有遇到过Python列表理解,请对此进行一些研究。这就是允许我们写一行代码来得到所有相关值之和的原因。你知道吗
相关问题 更多 >
编程相关推荐