2016-08-04 5 views
-1

Это как мой список выглядеть после того, как с помощью некоторых Csv разбора:Сортировка список списков в Python

list=[['1131', '01/06/15', 'PROFI ROM FOOD SRL', '290.7'], 
     ['1131', '', '', ''], ['2024194PJ', '01/08/15', 
     'SOCIETATEA NATIONALA DE', '2,088.17'], ['2024194PJ', '', 'RADIOCOMUNICATII SA', '']] 

(это выборка данных, фактический список будет больше) я разобрать этот список:

for a in list: 
    for x in a: 
     if ....: 
     anotherlist.append(x) 

Я хочу, чтобы этот вывод:

anotherlist=[['1131', '01/06/15', 'PROFI ROM FOOD SRL', '290.7'], 
['2024194PJ', '01/08/15', 'SOCIETATEA NATIONALA DE RADIOCOMUNICATII 
SA', '2,088.17']] 

Я хочу добавить к 2RD значение индекса для каждого предыдущего списка и удалить этот конкретный список, так что

[['2024194PJ', '01/08/15', 'SOCIETATEA NATIONALA DE', 
'2,088.17'], ['2024194PJ', '', 'RADIOCOMUNICATII SA', '']] 

будет этот

[['2024194PJ', '01/08/15', 
'SOCIETATEA NATIONALA DE RADIOCOMUNICATII SA', '2,088.17']] 

, а также избавиться от этого формата

['1131', '', '', ''] 

Но я не знаю, как сделать это.

ответ

0

Предполагая, что список всегда будет следовать схеме вы предоставили:

list2 = [] 
for i in range(len(list)/2): 
    list2 += [[list[i*2][0], 
       list[i*2][1], 
       list[i*2][2] + ' ' + list[i*2+1][2], 
       list[i*2][3]]] 

Объяснение:
Мы начинаем с пустым списком (песни2):

list2 = [] 

для цикла продолжающего через весь ваш список, но смотрит только на каждый второй элемент:

for i in range(len(list)/2): 

На каждом шаге, он добавляет новую запись в list2:

list2 += 

Эта новая запись представляет собой комбинацию из двух элементов списка, список [я * 2] и список [я * 2 + 1]:

  [[list[i*2][0], 
      list[i*2][1], 
      list[i*2][2] + ' ' + list[i*2+1][2], 
      list[i*2][3]]] 
+0

Отлично, это работает, можете ли вы объяснить мне, что вы там делали? Большое спасибо! – Rommel

+0

@Rommel Я добавил некоторые детали ответа. –

+0

Я получил эти очки, но как цикл игнорирует списки, которые мне не нужны? Благодаря! – Rommel

Смежные вопросы