Форум сайта python.su
7
С itemgetter красивее выглядит 
Офлайн
58
john123
Так Вам указали, что это мелочь и решается одной строкой 
А вот код колоссально отличается…
Офлайн
33
john123+ он быстрее.
С itemgetter красивее выглядит
Офлайн
7
Budulianinitemgetter или сам код?
+ он быстрее.

4kpt_IIЭтот код можно разложить на отдельные функции, устранив lambda и получится весьма читаемо.
А вот код колоссально отличается…
Отредактировано john123 (Июнь 27, 2014 19:03:17)
Офлайн
33
john123itemgetter
itemgetter или сам код?
john123
Этот код можно разложить на отдельные функции, устранив lambda и получится весьма читаемо.
Офлайн
857
Код Shaman'а с возвращением списка (упорядоченного).
>>> data = [ ... ["name 1", 1], ... ["name 1", 4], ... ["name 1", 2], ... ["name 2", 10], ... ["name 3", 1], ... ["name 3", 3], ... ["name 3", 1], ... ["name 4", 7], ... ["name 4", 1], ... ["name 4", 2], ... ] >>> >>> r = {} >>> o = [] >>> for n, v in data: ... r[n] = r.get(n, 0) + v ... if not o or o[-1] != n: ... o.append(n) ... >>> out = [(i, r[i]) for i in o] >>> >>> print(out) [('name 1', 7), ('name 2', 10), ('name 3', 5), ('name 4', 10)] >>>
john123
А во-вторых, что если в строке будет больше двух колонок?Shaman
Это будет совсем другая история.
>>> def f(seq): ... return seq ... >>> lst = [['a', 1, 2], ['b', 3, 4]] >>> >>> for i, *t in lst: ... print(i, f(t)) ... a [1, 2] b [3, 4] >>>
Отредактировано py.user.next (Июнь 27, 2014 22:24:34)
Офлайн
88
Я не уверен в спископотребностях ТС-а, а словарь всегда можно проитерировать.
Офлайн
857
ShamanВ первом сообщении написано.
Я не уверен в спископотребностях ТС-а
ShamanСловарь не упорядочен.
а словарь всегда можно проитерировать
>>> {'name1': 1, 'name10': 1, 'name2': 2, 'name20': 2} {'name10': 1, 'name20': 2, 'name2': 2, 'name1': 1} >>>
Офлайн
88
py.user.nextЭто не всегда нужно.
Словарь не упорядочен.
Офлайн
857
У него они упорядоченные - что входной, что выходной.
Отредактировано py.user.next (Июнь 29, 2014 21:27:27)
Офлайн