Дело в том, что я вручную добавил подмодуль :k3b-geohelper
в файл settings.gradle
include ':app', ':k3b-geohelper'
, и все работает отлично в моей системе сборки mswindows
Когда я нажал обновление для github fdroid build system не удалось выполнить
Cannot evaluate module k3b-geohelper : Configuration with name 'default' not found
. Окончательным решением было то, что папка подмодуля была названа k3b-geoHelper
not k3b-geohelper
.
В случае MSWindows не имеет значения, но в системе Linux это делает
Нет, нет. Понятие dict создает новый элемент new для каждой итерации, а вашему коду нужно создать меньше элементов (консолидировать значения).
Невозможно ключи доступа, созданные на более ранней итерации, не без использования (уродливых, непитонических) побочных эффектов. Объект dict
, который будет создан посредством понимания, пока не существует, поэтому нет возможности создать самонаклад.
Просто придерживайтесь своего for
цикла, это
Альтернативой было бы использовать сортировку и группировку, алгоритм O (NlogN) и простой O (N) вашего прямого цикла:
from itertools import groupby
from operator import itemgetter
res = {key: sum(t[1] for t in group)
for key, group in groupby(sorted(data, key=itemgetter(0)), key=itemgetter(0))}
Используйте reduce
и collections.Counter
:
>>> from operator import add
>>> from collections import Counter
>>> reduce(add, (Counter(dict([x])) for x in data))
Counter({'c': 9, 'a': 5, 'b': 4, 'd': 3})
Не используйте oneliner. Вместо этого используйте collections.defaultdict
и простой цикл:
>>> pairs = [('a', 1), ('b', 3), ('a', 4), ('c', 9), ('b', 1), ('d', 3)]
>>> result = defaultdict(int)
>>> for key, value in pairs:
... result[key] += value
...
>>> result
defaultdict(<class 'int'>, {'a': 5, 'c': 9, 'b': 4, 'd': 3})
Легко понять, питонов и быстро.
Это похоже на то, что вы пытаетесь сделать. Но я не буду рекомендовать это, поскольку читаемость страдает.
data = [('a',1),('b',3),('a',4),('c',9),('b',1),('d',3)]
print reduce(lambda d,i: [d.__setitem__(i[0],d.get(i[0],0)+i[1]),d][1], data, {})
Выход
{'a': 5, 'c': 9, 'b': 4, 'd': 3}