Как вычислить среднее значение значений каждого ключа из 1 миллиона структурных данных?

#algorithm #struct

#алгоритм #структура

Вопрос:

У меня есть 1 миллион следующей структуры:

 type person struct {
  age     int
  . . .
  //some more attributes like name, surname, etc
}
  

Моя цель в конце — узнать для имени каждого человека среднее значение его возраста. Человек может встречаться несколько раз или только 1 раз. Я читаю структурные данные один за другим, они заданы случайным образом, и я не могу их отсортировать.

Пример только с атрибутами возраста и имени, записанными как данные типа ключ-значение:

 Josh: 34
Abigail: 6
Aaron: 43
Josh: 4
Frederich: 22
...
Aaron: 3
...
  

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

Моя идея заключалась в следующем:

Я использовал данные с ключевыми значениями следующим образом: map[name]=average, howMany . Когда я обращался к данным, я вычислял новое среднее значение с учетом возраста новых данных и увеличивал количество. Я бы сказал, довольно просто.

Я не могу хранить в своей оперативной памяти 1 миллион подобных структур.

Я был бы признателен за любые предложения и любые исправления грамматики.

Комментарии:

1. Идея hashmap хороша. Если вам нужно обновить набор людей (добавить или удалить людей), вы должны сохранить дополнительные данные: вместо среднего значения значение вашей карты должно быть парой (общее количество возрастов, количество людей)

2. В этом вопросе слишком много неизвестных параметров… например, являются ли данные статическими (вы можете вычислить их один раз заранее) или динамическими (необходимо реализовать анализ данных при запросе имени); можете ли вы изменить базовую структуру данных (например, отсортировать ее по имени), есть ли какая-то база данных, лежащая в ее основе (SQL может предоставитьответ по прихоти) и т.д.

3. Привет @ Jur, данные статичны и нет, я ничего не могу отсортировать, потому что это было бы очень медленно.

4. Если все 1 миллион записей имеют разные имена, результат должен состоять из 1 миллиона средних значений. Запрещено ли возвращать результат (набор средних значений) в ОЗУ? Кроме того, как сортировка 1 миллионов записей может быть «очень медленной»? Вы занимаетесь робототехникой или высокочастотной торговлей? 🙂