2014-01-17 2 views
0

사전 d를 사전 dd의 키로 사용하고 있습니다. 그렇게하기 위해 나는 dd의 키를 frozensets로 변환합니다. 나는 txt 파일에 dd를 저장해야하므로, frozenset 키를 문자열로 변환합니다. 결과 사전은 "새"입니다. 그럼 json은 "new"를 인코딩합니다.문자열을 다시 frozenset으로 변환하려면 어떻게해야합니까?

"새로운"단어를 사전으로 변환하고 키를 다시 frozensets로 변환하려면 어떻게해야합니까? (frozensets과 json을 사용하는 것보다 좋은 방법이 있다면 듣고 싶습니다.)

new = {} 
d = {'key1':'value1'} 
dd = {frozenset(d.items()):'my_value'} 
for k,v in dd.iteritems(): 
    new[str(k)] = v 
new = json.dumps(new) 

newest = json.loads(new) 
for k,v in newest.iteritems(): 
    print frozenset(k) 

### result ### 
frozenset([' ', "'", ')', '(', ',', '1', '[', ']', 'a', 'e', 'f', 'k', 'l', 'o', 'n', 's', 'r', 'u', 't', 'v', 'y', 'z']) 
+1

사전을 특정 형식이나 텍스트 파일로 저장해야합니까? 그렇지 않다면 단순히'pickle'을 사용할 수 있습니다. – Nabla

+0

아니, 그냥 텍스트 파일에 저장 한 다음 검색하고 변경 한 다음 동일한 텍스트 파일에 저장할 필요가 있습니다. 내가 할 수있는 한 나는 행복하다. (전 절임을 사용한 적이 없습니다) –

+0

텍스트 파일을 편집 할 수 있어야합니까? 그냥 피클을 사용하지 않으면. –

답변

0
import pickle 

d = {'key1':'value1'} 
dd = {frozenset(d.items()):'my_value'} 

# Save to dumpfile 
pickle.dump(dd, open('dumpfile', 'wb')) 

# Load again from dumpfile 
dd = pickle.load(open('dumpfile', 'rb')) 
+0

그게 전부 야. 고마워! –

0

Afret 당신이 그래서

new[str(k)] = v 

에 문자열로 구문 분석하기 때문에 여전히 k 같은 문자열 값이 json.loads

newest = json.loads(new) 
    for k,v in newest.iteritems(): 
     .... 

로 데이터를로드, 당신은에 있습니다 eval 좋아요 :

for k,v in newest.iteritems(): 
    k = eval(k) 

문자열에서 원본을 구문 분석합니다.

+0

도 작동합니다. –

관련 문제