2013-11-26 3 views
0

Я использую программу, которая возвращает результат в формате [(11,3.22), (12,4.6), (9,2.4)] Мне нужно извлечь первую часть, чтобы ее изменить для имен и прикрепить второе значение и сохранить его в файле csv. Как извлечь каждую часть подчасти?Извлечь данные из списка в python

+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/

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) 
Смежные вопросы