2016-12-03 3 views
2

iAMPL jupyter 노트북 매직의 결과로 얻을 수있는 인스턴스가 있습니다. 파이썬으로 어떻게 사전으로 변환 할 수 있습니까? 모든 시도가 실패 이것의 정확한 유형을 찾을 수 있기 때문에 나는 실용적인 접근을 시도하고있어,유형 인스턴스를 사전으로 변환

{('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

누락 된 중괄호 (curly brace)가 빠진 점을 제외하고는 실제로는 사전과 같습니다. 그것은 문자열인가? 보십시오 "'(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

확인 :

print(x) 

다음과 같은 출력을 반환합니다.

import ast 

d = ast.literal_eval(str(x)) 
:

인쇄 x 내가 (최적이 아닐 수도 있음)과 같이, X str로 변환 사용 ast.literal_eval에 공급하는 것입니다 제안 그래서, 문자열 형식의 유효한 파이썬 사전을 인쇄하는 것

d 지금 유효한 파이썬 사전입니다 :

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

반환 0.0

,

어쩌면 거기에 더 우아한 해결책이지만, 그 동안 일을 않습니다.

+0

고마워, 진. 지금은 작동하며 데이터가 너무 작아서 충분히 빠릅니다. –

관련 문제