我一直试图找出一种方法来根据两列的值选择唯一的行.例如,这是我的文件的示例/示例:
chr1 10 12
chr1 10 12
chr1 10 11
chr1 9 12
chr2 15 20
Run Code Online (Sandbox Code Playgroud)
这就是我希望我的输出看起来像:
chr1 10 12
chr1 10 11
chr1 9 12
chr2 15 20
Run Code Online (Sandbox Code Playgroud)
我试过使用这段代码,因为我喜欢它不会弄乱我文件的顺序:
awk -F"\t" '!_[$2]++' SNP_positions.txt > SNP_positions_uniq.txt
Run Code Online (Sandbox Code Playgroud)
但是,它仅捕获一列的独特功能.有没有办法编辑它以使其适用于两列?
我正在尝试小写字符串中的前n个字符.
例如,假设我想要小写此字符串中的前4个字符:
String1 = 'HELPISNEEDED'
Run Code Online (Sandbox Code Playgroud)
我希望输出看起来像这样:
String1 = 'helpISNEEDED'
Run Code Online (Sandbox Code Playgroud)
我以为我可以用这个:
String1 = String1[4].lower() + String1[5:]
Run Code Online (Sandbox Code Playgroud)
但这给了我这个输出:
String1 = 'iSNEEDED'
Run Code Online (Sandbox Code Playgroud)
我是怎么做错的?
这就是我从下面列出的列表中生成字典的方法:
Genes = ['A2M', 'A2M', 'ACADS', 'ACADVL']
Isoforms = ['NM_000014', 'NM_000016', 'NM_000017', 'NM_000018']
ExonPos = ['9220303,9220778,9221335,9222340,9223083,9224954,9225248,9227155,9229351,9229941,9230296,9231839,9232234,9232689,9241795,9242497,9242951,9243796,9246060,9247568,9248134,9251202,9251976,9253739,9254042,9256834,9258831,9259086,9260119,9261916,9262462,9262909,9264754,9264972,9265955,9268359,', '76190031,76194085,76198328,76198537,76199212,76200475,76205664,76211490,76215103,76216135,76226806,76228376,', '121163570,121164828,121174788,121175158,121175639,121176082,121176335,121176622,121176942,121177098,', '7123149,7123440,7123782,7123922,7124084,7124242,7124856,7125270,7125495,7125985,7126451,7126962,7127131,7127286,7127464,7127639,7127798,7127960,7128127,7128275,']
#Length = len(ExonPos)
from collections import defaultdict
d = defaultdict(lambda: defaultdict(list))
for k, iso, exon in zip(Genes, Isoforms, ExonPos):
d[k][iso] = exon.split(",")
length = len(d[exon])
print length
print(d)
Run Code Online (Sandbox Code Playgroud)
这让我可以用重复的键制作我的字典.但是,现在我正在尝试查找字典中单个列表的长度length = len(d[exon]),但是,我的输出不断给我零.使用defaultdict中有什么特别之处我不知道吗?也许这是我的python版本(2.7.6)?我尝试了多种不同的方法,但我觉得这个len()功能应该有效.