【发布时间】:2017-10-10 19:12:12
【问题描述】:
我有一本像这样的字典:
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
我想将其转换为命名元组。 我目前的方法是使用以下代码
namedTupleConstructor = namedtuple('myNamedTuple', ' '.join(sorted(d.keys())))
nt= namedTupleConstructor(**d)
产生
myNamedTuple(a=1, b=2, c=3, d=4)
这对我来说很好用(我认为),但是我是否缺少诸如...的内置功能。
nt = namedtuple.from_dict() ?
更新:正如 cmets 中所讨论的,我想要将我的字典转换为命名元组的原因是它变得可散列,但通常仍然可以像字典一样使用。
UPDATE2:在我发布这个问题 4 年后,TLK posts a new answer 推荐使用我认为非常棒的数据类装饰器。我认为这就是我现在将使用的方式。
【问题讨论】:
-
使用 namedtuple,你应该创建一次 namedtuple 类型并重复使用它,而不是每次都生成一个新的 namedtuple 类型。每次生成一个新的 namedtuple 类型都很慢,而且会破坏任何空间优势。
-
@user2357112 大概,用户有许多具有相同键的字典。
-
不会有一个内置的同时构造类型和元组,因为你应该重用类型。
-
要另辟蹊径(namedtuple 进入字典),请看这里:stackoverflow.com/q/26180528/674039
标签: python dictionary namedtuple