Многомерный массив с неупорядоченными индексами в Python - PullRequest
0 голосов
/ 30 июня 2018

У меня есть подмножества конечного набора из n членов {1, ..., n}, и члены каждого подмножества имеют соответствующие значения (в зависимости от того, из какого они подмножества), которые необходимо сохранить.

Можно думать о нем как о двумерном массиве, где одна ось является подмножеством, а другая - элементами 1, ..., n.

Чтобы выполнить поиск:

x является подмножеством {1, ..., n}, y является элементом {1, ..., n}

ввод: (x, y)

вывод: значение, соответствующее (x, y)

В Python я придумал реализацию, в которой используются словари словарей. Например, «А» - это словарь словарей. Для frozenset x (заморожено, потому что оно должно быть неизменным), A [x] - это словарь с ключами = членами x, значениями = данными для (x, y). A [x] [y] = сохраненные данные для (x, y).

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

Edit: Пример:

# n = 2
A = dict()
A[frozenset({1})] = {1: f(frozenset({1}), 1)}
A[frozenset({2})] = {2: f(frozenset({2}), 2)}
A[frozenset({1, 2})] = {1: f(frozenset({1, 2}), 1), 2: f(frozenset({1, 2}), 2)}
A[frozenset({1, 2})][2] = f(frozenset({1, 2}), 2)
...