算法python数据结构

时间:2016-12-01 06:01:55

标签: python python-3.x

我正在创建一个基本上像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应该是什么)

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

你会喜欢它!!