我正在做一個數據結構,基本上就像一個Python字典,但它有3個鍵和一個輸出。算法蟒蛇數據結構
例如,我有一個nXn矩陣和幾個標籤,可能與它一起使用。
所以我的僞代碼就像:
my_dict[(2, 2, NN)] = 1.0
my_dict[(2, 4, NN)] = .12
my_dict[(0, 1, VP)] = .14
my_dict[(1, 1, VB)] = 1.0
會工作在Python什麼樣的數據結構是什麼? (我應該my_dict是)
我正在做一個數據結構,基本上就像一個Python字典,但它有3個鍵和一個輸出。算法蟒蛇數據結構
例如,我有一個nXn矩陣和幾個標籤,可能與它一起使用。
所以我的僞代碼就像:
my_dict[(2, 2, NN)] = 1.0
my_dict[(2, 4, NN)] = .12
my_dict[(0, 1, VP)] = .14
my_dict[(1, 1, VB)] = 1.0
會工作在Python什麼樣的數據結構是什麼? (我應該my_dict是)
Python dict
可以存儲tuples
作爲鍵,但條件是它必須是可散列的。
而且,如果元組內的元素是可散列的,則tuple
是可散列的。因此,如果所有3個密鑰都是可散列的,那麼您不需要創建另一個數據結構,相反,您可以使用自己的dict
。
>>> my_dict = {}
>>> my_dict[(2, 2, 'NN')] = 1.0
>>> my_dict[(2, 4, 'NN')] = .12
>>> my_dict[(0, 1, 'VP')] = .14
>>> my_dict[(1, 1, 'VB')] = 1.0
>>> my_dict
{(0, 1, 'VP'): 0.14, (2, 4, 'NN'): 0.12, (2, 2, 'NN'): 1.0, (1, 1, 'VB'): 1.0}
>>>
from collections import defaultdict
p = defaultdict();
p[(2,2,'A')] = 1.0
p[(2,4,'NN')] = 1.5
print p
>> defaultdict(None, {(2, 4, 'NN'): 1.5, (2, 2, 'A'): 1.0})
這是一個了不起的圖書館,可以幫助你持有的元組(或甚至另一個frozen_dict,唯一的標準是關鍵的需求是可哈希)作爲「鑰匙」的字典對象。
現在,如果你想驗證的元素:
In [8]:p.has_key((2, 4, 'NN'))
Out[8]: True
In [11]: p.values()
Out[11]: [1.5, 1.0]
要列出所有的密鑰字典:
In [13]: p.keys()
Out[13]: [(2, 4, 'NN'), (2, 2, 'A')]
你會愛上它!
你問你如何實現這個?您可以散列密鑰,然後使用散列圖。 – Carcigenicate
看起來像訪問一個numpy數組 –
字典鍵可以是任何可哈希對象。包含3個'keys'的元組是一個可接受的鍵,只要元組中的3個元素也是可散列的。 –