Python 3.x 为什么不是';我的字典打印不正确吗?
我不知道为什么,但是这个函数末尾的dict无法完全打印。它最多只能打印四个键+值,它们只是前四个。奇怪的是,第三个和第四个出现在相反的位置Python 3.x 为什么不是';我的字典打印不正确吗?,python-3.x,Python 3.x,我不知道为什么,但是这个函数末尾的dict无法完全打印。它最多只能打印四个键+值,它们只是前四个。奇怪的是,第三个和第四个出现在相反的位置 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
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)
重组(基因列表)
这给了我listAB=['AB','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}
非常感谢您的帮助。当我部分运行您的代码时,通过调用带有
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}
字典是从键到值的一对一映射。这意味着每个键唯一地标识字典中的单个元素。但是,在所需的字典输出中,您将有单个键映射到多个不同的值(例如,AB
到479
和9
)。这是不可能的
如果不需要map属性,而只想存储成对的值,则可以使用元组列表:
[('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]}
我怀疑你的字典打印正确,你给了它重复的键。(而且,你提到的“相反的点”听起来像是你认为字典是有序的。)你能把你的代码修改成a,或者至少给我们看看什么是
print(listAB)
和print(dictAB)
return吗?在编辑我为你准备的东西时,我意识到这是因为有重复。有没有办法保留所有的值和赋值,即使是重复?而且,我没有意识到字典是无序的;我对这一点是全新的…在为DSM编辑我的问题时,我意识到这就是问题所在。有没有一种方法可以分别打印每个值,即使它们是重复的?太棒了。谢谢你的帮助不客气!请记住投票选出有用的答案,并接受解决您问题的答案。这同样适用于您提出的其他问题。另见。