微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将字典值除以其他列表

如何解决将字典值除以其他列表

我想通过将字典除以列表来计算字典中值的概率。 这是字典:

PPM = {'A': [1,4,1,3,2,0],'T': [3,6,'C': [1,4],'G': [1,2]}

我想用这个列表的长度来划分每个数字:

sequences = ["GAGGTAAACTCTG","TCCGTAAGTTTTC","CAGGTTGGAACTC","ACAGTCAGTTCAC","TAGGTCATTACAG","TAGGTACTGATGC"]

我尝试做一个类似这样的 for 循环:

PPM = {}
for k in PFM:
PPM[k]= [((x[i]/len(sequences)) == k for x in PFM) for i in range(len(PFM))]

但结果是这样的:

{'A': [<generator object <listcomp>.<genexpr> at 0x0000022407181580>,<generator object <listcomp>.<genexpr> at 0x0000022407181820>,<generator object <listcomp>.<genexpr> at 0x0000022407181F90>,<generator object <listcomp>.<genexpr> at 0x0000022407181970>],'T': [<generator object <listcomp>.<genexpr> at 0x0000022407181F20>,<generator object <listcomp>.<genexpr> at 0x00000224071819E0>,<generator object <listcomp>.<genexpr> at 0x00000224071816D0>,<generator object <listcomp>.<genexpr> at 0x00000224071817B0>],'G': [<generator object <listcomp>.<genexpr> at 0x00000224060FEF20>,<generator object <listcomp>.<genexpr> at 0x00000224060FEB30>,<generator object <listcomp>.<genexpr> at 0x00000224060FE9E0>,<generator object <listcomp>.<genexpr> at 0x00000224060FEF90>],'C': [<generator object <listcomp>.<genexpr> at 0x00000224060FE820>,<generator object <listcomp>.<genexpr> at 0x000002240717C190>,<generator object <listcomp>.<genexpr> at 0x000002240717CE40>,<generator object <listcomp>.<genexpr> at 0x000002240717CEB0>]}

我是 Python 新手,所以我真的不明白我所做的有什么问题。 感谢您的帮助!

解决方法

如果我正确理解您的问题(如果这不是您的意思,请纠正我/澄清),您可以使用以下词典理解:

result = {k: [i/len(sequences) for i in v] for k,v in PPM.items()}

{'A': [0.16666666666666666,0.6666666666666666,0.16666666666666666,0.0,0.5,0.3333333333333333,0.0],'C': [0.16666666666666666,0.6666666666666666],'G': [0.16666666666666666,1.0,0.3333333333333333],'T': [0.5,0.0]}
,

不完全确定我是否得到了您需要的内容,但是如果您想更新您的字典,以便将字典列表中的每个元素除以序列列表的长度,您可以尝试:

for key,value in PPM.items():
    value = [
        number/len(sequences)
        for number in value
        if sequences
    ]
    PPM.update({key:value})

如果您不想更新您的原始词典,您可以类似地创建一个新词典:

p = {
    key: [
            number/len(sequences) 
            for number in value 
            if sequences
        ]
    for key,value in PPM.items() 
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。