Mam listę nazw, np. ['Agrajag', 'Colin', 'Deep Thought', ... , 'Zaphod Beeblebrox', 'Zarquon']
. Teraz chcę podzielić tę listę na sublisty o podobnej wielkości, tak aby granice podgrup były na pierwszej liście nazw, np. AF, GL, MP, QZ, nie A-Fe, Fi-Mo, Mu-Pra , Pre-Z.Python: lista partycji nazw do podlist o jednakowej wielkości
mogę tylko wymyślić statycznie wielkości parition że nie bierze rozmiar podgrup pod uwagę:
import string, itertools
def _group_by_alphabet_key(elem):
char = elem[0].upper()
i = string.ascii_uppercase.index(char)
if i > 19:
to_c = string.ascii_uppercase[-1];
from_c = string.ascii_uppercase[20]
else:
from_c = string.ascii_uppercase[i/5*5]
to_c = string.ascii_uppercase[i/5*5 + 4]
return "%s - %s" % (from_c, to_c)
subgroups = itertools.groupby(name_list, _group_by_alphabet_key)
lepiej pomysły?
P.S .: Może to brzmieć trochę jak zadanie domowe, ale tak naprawdę jest to strona internetowa, na której członkowie powinni być wyświetlani w 5-10 zakładkach o jednakowej wielkości.
To wydaje się działać dość dobrze z moimi prawdziwymi danymi około 500 imion. Dzięki! –
Ach, dobrze - nie był pewien, czy będzie skalować. – senderle
@piquadrat, dzięki za zaakceptowanie - ale zauważ błąd! Zostało to naprawione powyżej. – senderle