是否可以从元组中获取Value:
TUPLE = (
('P', 'Shtg1'),
('R', u'Shtg2'),
('D', 'Shtg3'),
)
调用STR键,如P
Python说只有int可以用于这种类型的'查询'
我不能使用循环(太多开销......)
谢谢!
答案 0 :(得分:46)
此类查询的规范数据结构是字典:
In [1]: t = (
...: ('P', 'Shtg1'),
...: ('R', u'Shtg2'),
...: ('D', 'Shtg3'),
...: )
In [2]: d = dict(t)
In [3]: d['P']
Out[3]: 'Shtg1'
如果使用元组,则无法避免循环(显式或隐式)。
答案 1 :(得分:8)
您想要使用字典。
d = { 'P': 'Shtg1', 'R': u'Shtg2', 'D':'Shtg3' }
然后您可以像这样访问密钥:
d['P'] # Gets 'Shtg1'
答案 2 :(得分:6)
您可以尝试使用named tuple而不是转到完整词典。有关详情,请参见this question。
基本上你为字段定义标签,然后能够将它们称为value.tag1等。
引用文档:
命名的元组实例没有每个实例的字典,所以它们 是轻量级的,不需要比常规元组更多的内存。
答案 3 :(得分:6)
dict(TUPLE)[key]
会做你想做的事。
有一点内存开销,但速度很快。
答案 4 :(得分:3)
用python shell中的一些代码详细说明Eduardo的答案。
>>> from collections import namedtuple
>>> MyType = namedtuple('MyType', ['P', 'R', 'D'])
>>> TUPLE = MyType(P='Shtg1', R=u'Shtg2', D='Shtg3')
>>> TUPLE
MyType(P='Shtg1', R=u'Shtg2', D='Shtg3')
>>> TUPLE.P
'Shtg1'
>>> TUPLE.R
u'Shtg2'
>>> TUPLE.D
'Shtg3'
>>> TUPLE[0:]
('Shtg1', u'Shtg2', 'Shtg3')
请记住,元组是不可变的,字典是可变的。如果你想要不可变类型,namedtuple可能就是你的选择。