如何使用python在目录中分配键和值

如何使用python在目录中分配键和值,python,dictionary,Python,Dictionary,我想把Illumina对末端读数与参考基因组进行比对。我有一个目录,其中我只需要使用以paired_R1.fastq.gz和paired_R2.fastq.gz结尾的文件进行成对读取 我正在创建一个脚本,其中成对的_R1是键,成对的_R2是值;但是,我在for循环中分配键和值时遇到困难。我知道file1和file2没有定义,但我不知道如何将“endswith”的输出分别设置为键和值 if __name__ == '__main__': path = os.getcwd() dir

我想把Illumina对末端读数与参考基因组进行比对。我有一个目录,其中我只需要使用以paired_R1.fastq.gz和paired_R2.fastq.gz结尾的文件进行成对读取

我正在创建一个脚本,其中成对的_R1是键,成对的_R2是值;但是,我在for循环中分配键和值时遇到困难。我知道file1和file2没有定义,但我不知道如何将“endswith”的输出分别设置为键和值

if __name__ == '__main__':
    path = os.getcwd()
    dir_files = os.listdir(path)
    pair_reads = {}
    for file in dir_files:
        if file.endswith("_paired_R1.fastq.gz"):
            file = file1
            if file.endswith("_paired_R2.fastq.gz"):
                file = file2
                pair_reads[file1] = file2
    print(pair_reads)

提前谢谢你

我明白你的逻辑。只有几个问题:

  • file=file1
    ,应该是
    file1=file
    (与file2相同)
  • 这两个条件语句相互矛盾,因此它们应该位于同一缩进处,否则将永远不会执行其中一个
  • dir\u文件
    需要对要关联的正确文件进行排序,因此
    sorted(dir\u文件)
    确保了这一点
如果名称=main:
path=os.getcwd()
dir\u files=os.listdir(路径)
配对读取={}
对于已排序的文件(目录文件):
如果file.endswith(“\u paired\u R1.fastq.gz”):
file1=文件
如果file.endswith(“\u paired\u R2.fastq.gz”):
file2=文件
配对读取[file1]=file2
打印(成对读取)
只要目录结构满足每次读取都有一个
R1
和一个
R2
文件,就可以正常工作

编辑:另一种方式,使用列表理解:

如果名称=main:
path=os.getcwd()
dir_files=sorted(os.listdir(path))
R1s=[f表示dir\u文件中的f,如果f.endswith(“\u paired\u R1.fastq.gz”)]
R2s=[f表示dir\u文件中的f,如果f.endswith(“\u paired\u R2.fastq.gz”)]
配对读取=dict(zip(R1s,R2s))
打印(成对读取)

您能否提供一些示例数据,即文件名列表,然后是输入文件名时的预期输出?您能否给出一些文件名的示例,以及您希望它们如何配对?感谢您尝试帮助我,但代码工作得很好,这要感谢下面的注释Seb。