Найти - Пользователи
Полная версия: как проще всего схлопнуть списки?
Начало » Python для новичков » как проще всего схлопнуть списки?
1
ks
В списках начальном и конечном отличаются только последние элементы.

Т.е. в наличии несколько строк с одинаковыми элементами, где только последние элементы различаются.

Необходимо привести список списков к такому виду, чтобы те элементы которые отличаются были добавлены в 1 отдельный список.. те, которые совпадают - схлопнулись в 1, результирующий.

     # [
     # [elem1, ... comment11]
     # [elem1, ... comment12]
     # ...
     # [elem2, ... comment21]
     # ...
     # ]
     # [
     # [elem1, ... [comment11, comment12]]
     # [elem2, ... [comment21, ...]]
     # ...
     # ]
FishHook
set().intersection()
ks
FishHook
set().intersection()

>>> a = [1,2,3,4,6]
>>> b = [1,2,3,4,8]
>>> c = [0,1,2,3,5]
>>> d = [0,1,2,3,8]
>>> res = []
>>> res.append(a)
>>> res.append(b)
>>> res.append(c)
>>> res.append(d)

Разверните свою мысль, плз на этом примере.
FishHook
Легко, только сначала Вы покажите, что должно получиться в итоге на том же самом примере.
o7412369815963
from collections import defaultdict
d = defaultdict(set)
for (i, *x) in res:
    d[i] = d[i].union(set(x))
print(d)
defaultdict(<class 'set'>,{
  0: {1, 2, 3, 5, 8},
  1: {2, 3, 4, 6, 8}
})
Это py3, но на py2 аналогично.
pyuser
Как-то так можно:
from itertools import groupby
from operator import itemgetter
a = [1,2,3,4,6]
b = [1,2,3,4,8]
c = [0,1,2,3,5]
d = [0,1,2,3,8]
tmp = ((x[:-1], x[-1]) for x in (a, b, c, d))
for k, g in groupby(tmp, itemgetter(0)):
    k.append([x[-1] for x in g])
    print(k)
bismigalis
from itertools import groupby
data = [
    [1,2,3,4,8],
    [1,2,3,4,6],
    [0,1,2,3,5],
    [0,1,2,3,8]
]
def keyfunc(x):
    return x[:-1]
data.sort()
res = []
for k, g in groupby(data, keyfunc):
    k.append([x[-1] for x in g])
    res.append(k)
print res
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