Скажите, у меня есть несколько словарей
a = {'x': 1.0, 'y': 0.5, 'z': 0.25 }
b = {'w': 0.5, 'x': 0.2 }
Там только два, но вопрос касается произвольной суммы.
Какой самый быстрый способ найти среднее значение для каждой клавиши? Диктовки довольно редки, поэтому будет много случаев, когда много ключей не присутствуют в различных диктовках.
Результат, который я ищу, - это новый словарь, в котором есть все ключи и средние значения для каждого. Значения всегда плавающие, я с удовольствием окунусь в ctypes. Подход, который я использую, медленнее, чем хотелось бы, возможно, потому что в моем случае я использую defaultdicts, что означает, что я фактически инициализирую значения, даже если их там нет. Если это и есть причина медлительности, которую я с радостью реорганизую, просто хочу убедиться, что я не упускаю ничего очевидного.
Редактировать: Я думаю, что я вводил в заблуждение, каким должен быть результат, если значение отсутствует, оно должно действовать как 0.0, поэтому результат для приведенного выше примера будет:
{'w':0.25,'x':0.6,'y':0.25,'z':0.125}
Итак, деление по общему количеству уникальных ключей.
Главное, что мне интересно, есть ли хитрый способ разделить весь dict на длину за один шаг, или сделать сложения за один шаг. В основном очень быстрое векторное сложение и деление. Я кратко рассмотрел массивы numpy, но, похоже, они не применяются к диктам, и если бы я конвертировал дикты в списки, мне пришлось бы удалить свойство sparseness (явно установив отсутствующие значения в 0).