2017-04-07 118 views
1

工作,我有下面的語句具有字典或列表蟒蛇

onehot = collection.defaultdict(list) 

,我填有兩個維向量。 當我打印onehot這裏是我得到:

print(onehot) 
--->defaultdict<class'list'>,{0:['1200',1],1:['1203',2],2:['1400',4]} 

這是完美的。現在我的問題是有沒有辦法從onehot中獲得「配對」的價值。例如:

onehot 1200 ---> 1 
onehot 1800 ---> 32 

我是Python新手,所以我不確定它。

更新 問題是我真的不知道1200是在哪裏,所以我想和我對第二維數有興趣。
所以我需要到列表中尋找1200並返回第二維的值,在這種情況下是1

+4

並不清楚你的要求。 'onehot [0]'給你列表'['1200',1]',這不是你想要的嗎? –

+0

'1800 - > 32'從哪裏來?我在輸入中看不到它。 –

+1

@PaulRooney我想這只是一個例子 – Dudnikof

回答

3

這裏是一個任何方式與您的數據發揮函數返回列表中的第二個元素,並使用第一個元素作爲關鍵字(如果我正確理解了你,你想要什麼)。 你也可以簡單地擴展它來產生一個新的字典,你可以直接使用它。

def getByFirstListElement(k): 
     ret = [] #There could be multiple hits, this returns a list of all 
     for key, value in onehot.enumerate(): 
      if value[0] == k: 
       ret.append(value[1]) 
     return ret 

版本,返回的字典:

def getPairDict(k): 
      ret = {}#There could be multiple hits, this returns a list of all 
      for key, value in onehot.enumerate(): 
       if value[0] == k: 
        ret.update((value,))#Add the values to the dict 
      return ret 
+1

我會試試這個@roman感謝您的回答 – Engine

1

您可以將您的結構想象成多維數組。

如果你這樣做:onehot[0][0] --> 1200onehot[0][1] --> 1

迭代通過字典如下:

for key in onehot: 
    print("{} --> {}".format(onehot[key][0], onehot[key][1])) 

result: 
    1200 --> 1 
    1203 --> 2 
    1400 --> 4 

您可以在您認爲合適的:)

+0

感謝您的回答,我已經更新了這個問題。我不想通過使用該ID訪問該值,因爲我不知道哪個ID是1200 – Engine