2014-10-09 28 views
0

我一直停留在這一段時間(的Python 2.x的)使用字典,需要一個列表,作爲一個參數,並返回一個包含出現一次的元素列表

通過使用dict,編寫一個方法only_once(a),它將一個列表a作爲參數,並返回一個包含a的元素的列表,該元素只發生一次。元素必須以與a中的第一次出現相同的順序出現。

def once (a): 

    list=[] 
    d = {} 
    run=0 

    for i in a: 
     d[i] = d.has_key(i)  

    print ([k for k in d.keys() if not d[k]])) 

這將打印,只有在其收到

任何幫助將是巨大的

回答

0

你的關鍵問題是,你遍歷字典鍵的順序發生一次,但不是元素(顯式.keys()是不必要的,因爲您默認迭代字典的鍵)來獲取輸出;字典是無序。相反,你需要使用的輸入順序:您的代碼永遠不會使用list

def only_once(a): 
    d = {} 
    for item in a: 
     if item not in d: 
      d[item] = 0 
     d[item] += 1 
    return [item for item in a if d[item] == 1] 

注(其中,因爲它隱藏了內置的,是你不應該爲自己的變量使用的名稱)和run ,所以他們應該被刪除。

+0

你知道'14!= -14',對吧? – jonrsharpe 2014-10-09 19:17:57

+0

輸入中有兩個元素14,因此輸出不應該包含14. -14是我知道的自己的數字,因爲它只出現一次就可以了。例如。輸入 - > [14,14,-14] ...輸出應該是[-14],因爲它只發生一次 – ninjafan96 2014-10-09 20:16:24

+0

哦,我明白了。你的解釋有點不清楚。我編輯了我的答案;中心的批評,你迭代的關鍵,立場。 – jonrsharpe 2014-10-09 20:22:39

相關問題