私はこの問題をしばらく取り組んできましたが、誰かが助けてくれることを望んでいます。私は、transcripts_test.csvと呼ばれるcsvファイルの列[1]を繰り返し処理しようとしています。行[1]の各文字列は、coors_test.csvという別のcsvファイルからOCR_dictという辞書を作成しています。困惑辞書一致問題
transcripts_test.csvは含まれています
ENST00000347869,chr3,50126341,50156454,1
ENST00000452166,chr14,21679063,21737583,2
ENST00000452166,chr14,21679063,21737583,2
coors_test.csvは含まれています
chr3,141030221,141031065,Valid_10009,1000,+
chr6,141030221,141031065,Valid_10005,1000,+
chr14,141047080,141047610,Valid_10006,1000,+
これは私のコードです:
import csv
with open('coors_test.csv', mode='r') as coors_infile:
coors_reader = csv.reader(coors_infile)
for row in coors_reader:
chromo = row[0]
start = row[1]
end = row[2]
coordinates_list = [chromo,start,end]
OCR_dict = {row[3]:coordinates_list}
for keys,values in OCR_dict.items():
OCR_chromosome = values[0]
with open('transcripts_test.csv', mode='r') as transcripts_infile:
transcripts_reader = csv.reader(transcripts_infile)
for row in transcripts_reader:
transcript_chromosome = row[1]
if transcript_chromosome == OCR_chromosome:
print(transcript_chromosome, keys, OCR_chromosome)
私は上記のコードを実行すると、出力I取得する:
chr14 Valid_10006 chr14
chr14 Valid_10006 chr14
私が探しています出力は、次のとおりです。
chr3 Valid_10009 chr3
chr14 Valid_10006 chr14
chr14 Valid_10006 chr14
ないのはなぜ私のコードの一致と印刷chr3 Valid_10009 chr3
?どんな助けでも大歓迎です。ありがとう!
coordinates_list = [chromo,start,end]
OCR_dict = {row[3]:coordinates_list}
for keys,values in OCR_dict.items():
OCR_chromosome = values[0]
が、それはすべての反復で新しい辞書を作成し、その辞書が1つだけのキーを持っています
感謝を。私はあなたが言っていることを理解していると思います。上記のコードを実行しようとしましたが、何も印刷されません。どんなアイデアであっても問題ではありません。助けを前にありがとう! – drbunsen
問題は、辞書の値が3つの項目のリストであると思います。私は思っていません:wtranscript_chromosomeは、リスト内の項目と一致することができます。 – drbunsen
@ dr.bunsen:アイテムは、値ではなくキーで見つけられます。あなたが辞書の中の何かに合っていたいなら、それを鍵として使う必要があります。しかし、私はそれが正しいと思います、 'chr3'などは一致するキーのように見えます。 –