3

对于 a writerowcsv.DictWriter我需要将(a 的一部分)字典填充为空。我没有找到直接的解决方案。有吗?

喜欢

fieldnames = ['first','last']

伪代码

row = fieldnames.fill(None)

结果

print(row)
['first':None,'last':None]

以便

destination.writerow(row)

结果是

,
4

3 回答 3

8

这对于内置的 dict 方法fromkeys来说真的很自然:

>>> dict.fromkeys('abcd',None)
{'a': None, 'c': None, 'b': None, 'd': None}
>>> dict.fromkeys(['first','last'],None)
{'last': None, 'first': None}

根本不需要字典理解(2.7+)或列表理解。

于 2012-10-03T01:24:00.127 回答
5

这可以通过简单的字典理解来实现:

{key: None for key in keys}

例如:

>>> keys = ["first", "last"]
>>> {key: None for key in keys}
{'last': None, 'first': None}

编辑:看起来dict.fromkeys()是最佳解决方案:

python -m timeit -s "keys = list(range(1000))" "{key: None for key in keys}"
10000 loops, best of 3: 59.4 usec per loop
python -m timeit -s "keys = list(range(1000))" "dict.fromkeys(keys)"
10000 loops, best of 3: 32.1 usec per loop
于 2012-10-03T00:25:16.187 回答
0

像这样的东西?

>>> fieldnames = ['first', 'last']
>>> row = dict((h, None) for h in fieldnames)
>>> row
{'last': None, 'first': None}
>>>
于 2012-10-03T00:25:58.943 回答