我正在使用以格式吐出结果的程序 [(11,3.22),(12,4.6),(9,2.4)] 我需要提取第一部分以将其更改为名称并附加第二个值并将其存储在csv文件中。如何提取子部分的每个部分?
答案 0 :(得分:1)
>>> l = [(11,3.22),(12,4.6),(9,2.4)]
“需要提取第一部分” -
>>> l[0]
(11, 3.22)
“将其更改为名称” -
>>> l[0] = ('x', 'y')
>>> l
[('x', 'y'), (12, 4.6), (9, 2.4)]
“附加第二个值” -
>>> l[0] = dict(zip(('x', 'y'), l[1]))
>>> l
[{'y': 4.6, 'x': 12}, (12, 4.6), (9, 2.4)]
以CSV格式存储非常简单,请在此处查看示例 - http://www.pythonforbeginners.com/systems-programming/using-the-csv-module-in-python/
答案 1 :(得分: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)]
使用@theharshest推荐的CSV标准库模块是最强大的选项。 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)