Wpis z mikrobloga

Ok, mirki, mam problem.
Próbuję napisać kod, który będzie mi łączył obiekty w grupy po pierwszych wspólnych znakach (prefix) i wewnątrz grup sortował po dalszej części.
Przykład:
In: [a3, b2, d3, a2, b1, d1, a4]
Out: [ [a2, a3, a4], [b1, b2], [d1. d3] ]
Ilość znaków jaki ma prefix wiadoma. Ilość obiektów w każdej grupie: niewiadoma. Nie wszystkie grupy muszą być (w przykładzie nie ma grupy 'c') oraz obiekty tez nie wszystkie (brak chocby 'a1' w grupie 'a').
#programowanie #python - bo w tym muszę napisać rozwiazanie
  • 11
@LOLWTF: Racja, nie sprecyzowałem. Nie chodzi mi o napisanie kodu ale sugestię jak to ugryźć.
Dla programistów za 15k zasugerowanie algorytmu to nie powinien być problem, ja nawet programistą nie jestem ;)

@miszczu_blady: Wygląda obiecująco, zerknę jak wrócę do mieszkania :)
Racja, nie sprecyzowałem. Nie chodzi mi o napisanie kodu ale sugestię jak to ugryźć.


@venomik: to spoko :)

a więc, (jak zasugerował miszczu), przyda Ci się default dict.

1. tworzysz słownik: result = defaultdict(list)
2. iterujesz po surowej liście
3. apendujesz listę w defultdikcie, gdzie kluczem jest prefix
4. ostatecznie możesz przerobić ten słownik na listę list
In [1]: l = ['a3', 'b2', 'd3', 'a2', 'b1', 'd1', 'a4']
@venomik: @LOLWTF: można też w jednej linii

In [2]: [[s for s in l if s.startswith(prefix)] for prefix in {s[:1] for s in l}]
Out[3]: [['b2', 'b1'], ['a3', 'a2', 'a4'], ['d3', 'd1']]
@legolass: o tyle to kiepskie, że iterujesz:
1. pierwszy raz, aby otrzymać seta z prefiksami
2. drugi raz iterujesz seta z prefiksami
3. dla każdego prefiksa iterujesz całą listę

Dla tego przykładu zamiast jednej iteracji masz 5.

Jest też mało czytelne. Zysk z takiego jednolinijkowca żaden, tylko problemy.
@LOLWTF: ja sem stary programer, który pythona hołubi za super składnie, ale jak się znajdzie coś lepszego to czapkę z głowy ściągam. W moim osobistym rankingu python siedzi na pierwszym miejscu razem ze scalą, ale dlatego że ma dużo niższą barierę wejścia a nie dlatego że jest lepszym językiem. Innymi słowy - bardzo upraszczając - Scala dla Pythona/Ruby jest tym czym Python/Ruby dla PHP. I o ile w przypadku Py/RB ten