2013-11-26 160 views
0

我正在使用一個程序,結果格式爲 [(11,3.22),(12,4.6),(9,2.4)] 我需要提取第一部分以更改它命名並附加第二個值並將其存儲在csv文件中。我如何提取子部分的每個部分?從python列表中提取數據

+0

你是什麼意思? –

回答

0

我假設您的意思是對於列表中的每個元組,使用從整數映射的字符串替換第一個元素。

您可以使用列表理解這樣做的:

>>> id_to_str_map = {11:"foo", 12:"bar", 9:"baz"} 
>>> l = [(11,3.22),(12,4.6),(9,2.4)] 
>>> result = [(id_to_str_map[idx], value) for (idx, value) in l] 
>>> print result 
[('foo', 3.22), ('bar', 4.6), ('baz', 2.4)] 

使用CSV標準庫模塊所推薦的@theharshest是最穩健的選擇。爲Python 2.7標準庫文件:http://docs.python.org/2/library/csv.html

如果你有一個大的數據集工作,那麼它很可能更好,而不是用生成器表達式爲你的每一行寫出CSV文件懶洋洋地執行映射。

import csv 
id_to_str_map = {11:"foo", 12:"bar", 9:"baz"} 
l = [(11,3.22),(12,4.6),(9,2.4)] 
with open("blah.csv", "wb") as csvfile: 
    csv_writer = csv.writer(csvfile) 
    for row in ((d[idx], value) for (idx, value) in l): 
     csv_writer.writerow(row)