我想创建一个有30个条目的命名元组,为了使代码更简短,我想这样做:
from collections import namedtuple
header_dict = {0: "id",
1: "PR_DISPLAY_NAME",
2: "PR_HOME_ADDRESS_STREET",
3: "PR_ZIP",
...
29: "PR_SURNAME",
}
Person = namedtuple('Person', '{} {} {}'.format(header_dict[0], header_dict[1], header_dict[2]))
s = '{} ' * 30
Person = namedtuple('Person', s.format(header_dict[(i for i in range(30)]))第一个"Person = ...“指令可以工作,但第二个指令的结果是:
KeyError: <generator object <genexpr> at 0x7fc2a1cff240>我使用的是Python 3.4.2
代码应该是什么样子的,或者有没有更好的方法来创建这个命名元组?
发布于 2018-08-29 17:21:47
您可以执行类似以下内容的操作
Person = namedtuple('Person', s.format(*(header_dict[i] for i in range(30))))从python 3.6开始,python dict保留了插入顺序。因此,从python3.6开始,您可以
Person = namedtuple('Person', ' '.join(header_dict.values()))https://stackoverflow.com/questions/52073784
复制相似问题