2016-12-03 4 views
2

У меня есть экземпляр, который я получаю в результате использования iMPPL jupyter notebook magic. Как я могу преобразовать это в словарь в python?Преобразование экземпляра типа в словарь

print(x) 

Возвращает следующий вывод:

{('87', '41'): 0.0, ('59', '20'): 0.0, ('32', '40'): 0.0, ('49', '2'): 0.0, ('1', '20'): 0.0, ('21', '17'): 0.0, ('92', '3'): 0.0, ('55', '30'): 0.0, ('3', '15'): 0.0, ('8', '51'): 0.0, ('24', '28'): 0.0, ('18', '44'): 0.0, ('82', '38'): 0.0, ('63', '47'): 0.0, ('102', '47'): 0.0, ('87', '11'): 0.0, ('79', '14'): 0.0, ('4', '30'): 0.0, ('63', '6'): 0.0, ('71', '10'): 0.0, ('11', '33'): 0.0, ('54', '50'): 0.0, ('25', '13'): 0.0, ('47', '24'): 0.0, ('77', '1'): 1.0, ('3', '27'): 0.0, ('73', '7'): 0.0, ('63', '17'): 0.0, ('45', '21'): 0.0, ('16', '22'): 0.0, ('23', '29'): 0.0, ('7', '1'): 0.0, ('51', '2'): 0.0, ('83', '47'): 0.0, ('65', '51'): 0.0 
+0

кроме отсутствующего закрывающего фигурного скобки это действительно похоже на словарь. Это строка? try "' type (x) '" –

+0

Его на самом деле намного дольше. В результате получается результат от решателя, который возвращает матрицу 105 * 56. Строки - это номера строк и столбцов, а float - значение матрицы. Если вы хотите, я могу поделиться кодом, как я получил матрицу с вами. Я использую iAMPL, это http://zverovich.net/2013/01/08/ampl-magic-using-ipython-as-an-interface-to-ampl.html. При выполнении типа (x) он возвращает «экземпляр», о котором я понятия не имею, как с этим бороться, потому что я вижу его впервые –

+1

. Каков результат 'dict (x)'? – ettanany

ответ

1

Ok, я стараюсь прагматический подход, так как все попытки найти точный тип этого не удалось.

Печать x кажется напечатать правильный словарь питона в виде строки, так что я предлагаю (который не может быть оптимальным) является использование х конвертированы в str и кормить его ast.literal_eval, как это:

import ast 

d = ast.literal_eval(str(x)) 

d теперь действительный словарь питона:

print(d[('87','41')]) 

возвращается 0.0

Возможно, есть более элегантное решение, но тем временем это делает работу.

+0

Спасибо, Жан. Работает до сих пор, и у меня есть небольшой набор данных, поэтому он достаточно быстрый –

Смежные вопросы