我不知道为什么,但是这个函数末尾的字典将无法完全打印。它最多只能打印四个键+值,它们只是前四个键。奇怪的是,第3和第4位出现在相反的位置。
genelist = ['ABC', 'abc', 'Abc', 'aBC', 'ABc', 'abC', 'AbC', 'aBc']
def recombAB(x):
rec_total = 0
primlistAB = []
for item in x:
split = list(item)
del split[2]
primlistAB = primlistAB + split
listAB = [primlistAB[0] + primlistAB[1], primlistAB[2] + primlistAB[3], primlistAB[4] + primlistAB[5], primlistAB[6] + primlistAB[7], primlistAB[8] + primlistAB[9], primlistAB[10] + primlistAB[11], primlistAB[12] + primlistAB[13], primlistAB[14] + primlistAB[15]]
print(listAB)
dictAB = {listAB[0] : freq1, listAB[1] : freq2, listAB[2] : freq3, listAB[3] : freq4, listAB[4] : freq5, listAB[5] : freq6, listAB[6] : freq7, listAB[7] : freq8}
print(dictAB)
recombAB(genelist)
这给了我listAB = ['AB','ab','ab','aB','AB','ab','ab','aB']
并且dictAB = {'AB':9,'ab':9,'aB':1,'Ab':1}
当我正在寻找的是{'AB':479,'ab':473,'Ab':15,'aB':13,'AB':9,'ab':9,'Ab ':1,'aB':1}
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
当我部分运行您的代码时,通过调用genelist
作为参数的函数,我得到listAB
的以下输出:
['AB', 'ab', 'Ab', 'aB', 'AB', 'ab', 'Ab', 'aB']
如果你仔细观察,那里你有重复的值,基本上只有4个不同的值。
因此,在构建字典时,可以为同一个键指定多个值,覆盖以前的值。
我正在寻找的是
{'AB':479, 'ab':473, 'Ab':15, 'aB':13, 'AB':9, 'ab':9, 'Ab':1, 'aB': 1 }
字典是从键到值的1对1映射。这意味着每个键唯一地标识字典中的单个元素。但是在您想要的词典输出中,您可以使用单个键映射到多个不同的值(例如AB
到479
和9
)。这是不可能的。
如果您不需要map-property但只想存储值对,则可以改为使用元组列表:
[('AB', 479), ('ab', 473), ('Ab', 15), ('aB', 13), ('AB', 9), ('ab', 9), ('Ab', 1), ('aB', 1)]
或者,如果您确实需要能够从“密钥”中查找值,则可以通过映射到值列表来创建多值字典:
{'AB': [479, 9], 'ab': [473, 9], 'Ab': [15, 1], 'aB': [13, 1]}