3

awriterowの a のcsv.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 に答える