如何解决将字典值除以其他列表
我想通过将字典除以列表来计算字典中值的概率。 这是字典:
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 举报,一经查实,本站将立刻删除。