Найти - Пользователи
Полная версия: Разгруппировка списков в списке
Начало » Python для новичков » Разгруппировка списков в списке
1
info.rss
Есть такие данные:
(1,
  (11, a, w), 
  (24, пd, fпр), 
  (44, dы, fав), 
)
(2, 
  (66, аd, f), 
  (24, d, f ), 
)
(4, 
  (5, d, sd), 
)
...
или это может быть словарь, не имеет значение
как это превратить, в это:
[(1, 11, u'a', u'w'), 
(1, 24, u'пd', u'fпр'), 
(1, 44, u'dы', u'fав'), 
(2, 66, u'аd', u'f'), 
(2, 24, u'd', u'f' ), 
(4, 5, u'd', u'sd')]

py.user.next
>>> from itertools import repeat, chain
>>> 
>>> lst = [
... (1,
...   (11, 'a', 'w'), 
...   (24, 'пd', 'fпр'), 
...   (44, 'dы', 'fав'), 
... ),
... (2, 
...   (66, 'аd', 'f'), 
...   (24, 'd', 'f' ), 
... ),
... (4, 
...   (5, 'd', 'sd'), 
... )
... ]
>>> 
>>> out = list(chain.from_iterable(zip(repeat(i[0]), i[1:]) for i in lst))
>>> out
[(1, (11, 'a', 'w')), (1, (24, 'пd', 'fпр')), (1, (44, 'dы', 'fав')), (2, (66, 'аd', 'f')), (2, (24, 'd', 'f')), (4, (5, 'd', 'sd'))]
>>>
terabayt
out = []
for i in lst:
    out += [(i[0],) + j for j in i[1:]]
lst = [(1,
        (11, 'a', 'w'),
        (24, 'pd', 'fpr'),
        (44, 'du', 'fav'),
        ),
       (2,
        (66, 'ad', 'f'),
        (24, 'd', 'f'),
        ),
       (4,
        (5, 'd', 'sd'),
        )]
out = []
for i in lst:
    out += [(i[0],) + j for j in i[1:]]
print out
[(1, 11, 'a', 'w'), (1, 24, 'pd', 'fpr'), (1, 44, 'du', 'fav'), (2, 66, 'ad', 'f'), (2, 24, 'd', 'f'), (4, 5, 'd', 'sd')]
info.rss
Отлично, то что надо, спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB