#python #dictionary
#python #словарь
Вопрос:
Предположим, что данная большая матрица отображает перечень товаров в магазине:
Матрица представлена следующей структурой данных:
{'products': [['milk'],
['bread'],
['eggs'],
['tomatoes'],
['cucumbers'],
['nuts'],
['cheese'], ...],
'store_a': {0: 40,
1: 415,
5: 55,
6: 7},
'store_b': {1: 45,
3: 44,
5: 451,
6: 451},
'store_c': {0: 455, 4: 54}}
То есть каждый инвентарь продукта в магазине представлен индексом products
списка.
Например, запасы молока в store_a равны 40.
Цель состоит в том, чтобы найти вероятность нахождения определенного продукта в магазине. То есть получаем следующую матрицу:
Необходимо написать функцию, которая получит указанную выше структуру данных и вернет ту же структуру, за исключением того, что вместо количества будет отображаться вычисление вероятности.
В приведенном выше примере ожидаемый результат:
{'products': [['milk'],
['bread'],
['eggs'],
['tomatoes'],
['cucumbers'],
['nuts'],
['cheese'], ...],
'store_a': {0: 0.0773694390715667,
1: 0.802707930367505,
5: 0.106382978723404,
6: 0.0135396518375242},
'store_b': {1: 0.0454086781029263,
3: 0.0443995963673058,
5: 0.455095862764884,
6: 0.455095862764884},
'store_c': {0: 0.893909626719057,
4: 0.106090373280943}}
Следует иметь в виду, что это может быть очень большая матрица, и поэтому вычисление должно быть эффективным.
Комментарии:
1. Эффективность Ef настолько важна, возможно, вам следует работать с pandas. Фрейм данных для вычисления.
Ответ №1:
Попробуйте это:
input={'products': [['milk'],
['bread'],
['eggs'],
['tomatoes'],
['cucumbers'],
['nuts'],
['cheese'], ...],
'store_a': {0: 40,
1: 415,
5: 55,
6: 7},
'store_b': {1: 45,
3: 44,
5: 451,
6: 451},
'store_c': {0: 455, 4: 54}}
for i in input:
if i != "products":
sum=0
for j in input[i]:
sum=sum input[i][j]
for j in input[i]:
input[i][j]/=sum
print(input)
Комментарии:
1. Это, безусловно, решает проблему, но главный вопрос заключается в том, существует ли более быстрый способ