我有一个字典,其中每个值都是一个数组。
我想做的只是以writer.writerow(myrow)的形式将数组写入csv。
为什么以下不起作用:
for key,value in sorted(players.items()):
writer.writerow( value.insert(0,key))
答案 0 :(得分:3)
当您致电writer.writerow(value.insert(0, key))
时,这不起作用,因为value.insert(0, key)
会返回None
:
>>> value = [6, 7, 8]
>>> new = value.insert(0, 5)
>>> new
>>> print new
None
>>> value
[5, 6, 7, 8]
>>>
相反,在for
循环中添加一行:
for key,value in sorted(players.items()):
value.insert(0, key)
writer.writerow( value)
基本上,你正在做的是调用writer.writerow(None)
;上面的代码将解决这个问题。
希望这有帮助!
答案 1 :(得分:2)
因为list.insert
适用于“就地”#34;它返回None
因为它没有给出值,它只是在列表本身上运行。
想象一下:
def multiply_by_three(number):
global number
three = 3 # magic numbers are bad, right? :)
number = three * number
它不会返回数字,只是在它居住的地方改变它。实际上返回None
,因为如果函数不具有return
语句,则函数会隐式执行。{/ p>
基本上你正在做的事情:
for key,value in sorted(players.items()):
writer.writerow(None)
如果Array
代表list
,那么您可以改为:
for key,value in sorted(players.items()):
writer.writerow([key]+value)