天天看點

defaultdict python_Python使用defaultdict讀取檔案各列的方法

本文執行個體講述了Python使用defaultdict讀取檔案各列的方法。分享給大家供大家參考,具體如下:

#!/usr/bin/python

"""USAGE: python *.py align_SNP_site out_file"""

import sys

#import time

from collections import Counter

#t0=time.clock()

info=open(sys.argv[1])

fast=sys.argv[2]

d_c = {}

d1={}

d2={}

for line in info:

cols=line.strip().split("\t")

if cols[0] == "SNP pattern":

continue

else:

d1.setdefault(cols[4],[]).append(cols[1])

d2.setdefault(cols[7],[]).append(cols[1])

#d1.setdefault(cols[0],[]).append(cols[5])

#d2[cols[0]] = "\t".join(cols[0:3])

info.close()

print len(d1)

print len(d2)

my_list=[]

ref_fa = open("some_example.fasta", 'r')

for i in ref_fa.readlines():

if i.startswith(">"):

my_list.append(i.rstrip())

ref_fa.close()

print len(my_list)

#sys.exit()

result = open(fast,'w')

for k,v in d1.iteritems():

cnt1 = Counter(v)

#print cnt1

result.write("%s\t" % k)

for i in sorted(cnt1.items(), key = lambda x: x[1], reverse=True):

result.write("%s\t%d\t"%(i[0],i[1]))

result.write("\n")

for k,v in d2.iteritems():

cnt2 = Counter(v)

#print cnt2

result.write("%s\t" % k)

for i in sorted(cnt2.items(), key = lambda x: x[1], reverse=False):

result.write("%s\t%d\t"%( i[0],i[1]))

result.write("\n")

#t1=time.clock()

#print (t1-t0)

希望本文所述對大家Python程式設計有所幫助。