說我下面已經Python列表:如何處理文本字段列表總結列
list = [ ['text',2,3,4], ['text2',4,5,6] ]
y= map(sum,zip(*list))
print y
給人INT/STR錯誤。
我將如何彈出所有行中的所有「文本」並對其餘列進行求和。 Ans:我在尋找[6,8,10] 我注意到這個字段看起來像int,但是是str。 4對'4'。
說我下面已經Python列表:如何處理文本字段列表總結列
list = [ ['text',2,3,4], ['text2',4,5,6] ]
y= map(sum,zip(*list))
print y
給人INT/STR錯誤。
我將如何彈出所有行中的所有「文本」並對其餘列進行求和。 Ans:我在尋找[6,8,10] 我注意到這個字段看起來像int,但是是str。 4對'4'。
In [111]: lst = [ ['text',2,3,4], ['text2',4,5,6] ]
In [112]: import operator
In [113]: print(map(operator.add,*lst))
['texttext2', 6, 8, 10]
如果你不知道先驗這列包含文本,那麼你可以使用try..except塊來處理文本:
lst = [ ['text',2,3,4], ['text2',4,5,6] ]
result=[]
for column in zip(*lst):
try:
result.append(sum(map(int,column)))
except ValueError:
pass
print(result)
# [6, 8, 10]
>>> map(sum, zip(*list)[1:])
[6, 8, 10]
>>> list = [ ['text','2','3','4'], ['text2','4','5','6'] ]
>>> map(sum , [map(int,i) for i in zip(*list)[1:]])
[6, 8, 10]
>>>
def tail(l):
return l[1:]
map(sum, zip(*map(tail, list))
注意:我最近做了太多的Haskell。 ;-)
第一列總是文字,其餘的總是數字?這是來自speadsheet/CSV文件嗎? – Mikel 2011-02-11 01:33:47
@米克爾,1號和7號......如果能夠說出來,我可以切片,我需要它。 – Merlin 2011-02-11 01:39:32