0

我不知道为什么,但是这个函数末尾的 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]
        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 }

任何帮助将不胜感激,谢谢。

4

1 回答 1

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 }

字典是从键到值的一对一映射。这意味着每个键唯一地标识字典中的单个元素。但是在您想要的字典输出中,您将有单个键映射到多个不同的值(例如ABto4799)。这是不可能的。

如果您不需要 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]}
于 2012-11-04T16:45:00.080 回答