2017-10-13 102 views
0

我想将namedtuple的子集转换成一个字典。像下面我有Namedtuple作为常量。但我想创建一个字典,如{'typeB':'value_typeB', 'typeC':'value_typeC'}。有没有更好的方法来做到这一点?从namedtuple的子集中获得一个字典

from collections import namedtuple 
Namedtuple = namedtuple('Namedtuple', ['typeA', 'typeB', 'typeC', 'typeD']) 
Const = Namedtuple(typeA='value_typeA', typeB='value_typeB', typeC='value_typeC', typeD=' 
a = {k: v for k, v in Const._asdict().items() if k in ['typeB', 'typeC']} 
print(a) 
+0

你是什么意思更好与关键值是多少?目前的方法有什么问题? –

+0

喜欢更直接的方式来做到这一点,而不是迭代和检查。因为如果我在字典中有超过20个项目,并且想从中获得10个项目,则该行会很长 – jacobcan118

+0

您可以随时使用您感兴趣的密钥动态创建列表并将其用于'如果k在...'语句中 – efkin

回答

1

访问一个变量使用getattr内置函数

a = {k: getattr(Const, k) for k in ['typeB', 'typeC']}