Функция группировки и агрегации дает неожиданный результат - PullRequest
0 голосов
/ 22 февраля 2019

Уважаемое сообщество переполнения стека,

Я создал настраиваемую функцию группового режима, чтобы группировать ключи в словаре и объединять их суммированием.Функция написана так, как показано ниже:

from itertools import groupby
from operator import itemgetter

def group_by_field(data, fields):
    groups = []
    agg_group = itemgetter(*[item for item in fields])
    sorted_data = sorted(data, key = agg_group)
    for key, group in groupby(sorted_data, agg_group):
        dictionary = dict(zip([item for item in fields], key))
        dictionary["items"] = sum(item["items"] for item in group)
        groups.append(dictionary)
    return groups

Мои данные - это словарь или файл json, и они читаются, как показано ниже,

with gzip.open('data.json', 'rb') as f:
    data = json.load(f) 

И второй аргумент моей функции - этокортеж переменных, представленных таким образом,

('bnf_name',) 

или

('bnf_name', 'post_code',) 

Функция работает хорошо в обоих случаях, но когда я предоставляю только одну переменную, она уменьшает имя переменной,пожалуйста, посмотрите на приложенное изображение, чтобы увидеть результаты обоих случаев. результаты

Я хотел бы знать, почему функция ведет себя таким образом, и ждать любого предложения, которое решит мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...