2012-11-04 213 views
0

我不知道爲什麼,但在這個函數結束的字典將不能完全打印。它只會打印四個鍵+值,而且只是前四個鍵。奇怪的是,第三名和第四名出現在相反的位置。爲什麼我的字典不能正確打印?

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']

而且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}

任何幫助將不勝感激,謝謝。

+1

我懷疑你的字典*爲*打印正確,你已經給它重複鍵。 (另外,你提到「對點」使它聽起來像你想的字典是有序的。),你可以修改你的代碼是一個[自包含的示例](http://sscce.org/),或者至少說明我們用什麼'print(listAB)'和'print(dictAB)'返回? – DSM

+0

在編輯我給你的東西時,我意識到這是因爲有重複。有沒有辦法保留所有的價值和任務,即使重複?另外,我沒有意識到字典是無序的;我是這個品牌的新... – spikey273

回答

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的地圖。這意味着每個鍵唯一標識字典中的單個元素。但是,在您需要的字典輸出,你將有一個按鍵映射到多個不同的值(例如AB4799)。這不可能。

如果你不需要地圖,財產,但只是希望存儲對值,你可以使用一個元組的列表,而不是:

[('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]} 
+0

在編輯我的問題上帝DSM,我意識到這是問題。是否有辦法單獨打印每個值,即使它們是重複的? – spikey273

+0

太棒了。感謝您的幫助 – spikey273

+0

不客氣!請記住提出有用的答案,並接受解決問題的答案 - 這也適用於您提出的其他問題。另請參閱[常見問題](http://stackoverflow.com/faq#howtoask)。 – poke

相關問題