2013-11-26 124 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)