2016-10-09 2 views
2

내가 파일을 만들려고 노력 해요 :python3에서 사전에 정리 된 파일을 만들려면 어떻게해야합니까?

{'e': {'d'}, 'a': {'b', 'c'}, 'd': {'g'}, 'b': {'d'}, 'c': {'f', 'e'}, 'f': {'g', 'd'}}. 

내가 지금 사용하고있는 코드와 같은 딕셔너리 속으로

c;f 
b;d 
a;c 
c;e 
d;g 
a;b 
e;d 
f;g 
f;d 

것은

def read_file(file : open) -> {str:{str}}: 
f = file.read().rstrip('\n').split() 
answer = {} 
for line in f: 
    k, v = line.split(';') 
    answer[k] = v 
return answer 

다음과 같다 그러나 그것은 나를 준다 {'f': 'g', 'a': 'c', 'b': 'd', 'e': 'd', 'c': 'e', 'd': 'g'} 어떻게 해결할 수 있습니까? DICT 클래스를 :

답변

2

사전 이전 키를 덮어, 당신은 전통적인 접근 방식을 선호하는 경우가 defaultdict here

>>> import collections 
>>> answer = collections.defaultdict(set) 
>>> for line in f: 
...  k, v = line.split(";") 
...  answer[k].add(v) 
... 
>>> answer 
defaultdict(<class 'set'>, {'b': {'d'}, 'd': {'g'}, 'f': {'d', 'g'}, 'e': {'d'}, 'a': {'c', 'b'}, 'c': {'f', 'e'}}) 

, 당신은 if 조건

>>> answer = {} 
>>> for line in f: 
...  k,v = line.split(";") 
...  if k in answer: 
...   answer[k].add(v) 
...  else: 
...   answer[k] = {v} 
... 
>>> answer 
{'b': {'d'}, 'd': {'g'}, 'f': {'d', 'g'}, 'e': {'d'}, 'a': {'c', 'b'}, 'c': {'f', 'e'}} 
+0

하지만 여전히 질문이를 추가 할 수 있습니다 사용 해쉬 가능하다. 그래서 왜 우리는 모든 코딩 작업에 대해 기본 사전을 사용하지 않는가? 기본 사전이 더 융통성있는 것처럼 보입니다. –

+0

@ProgrammingDonkey 기본 dict는 몇 가지 유스 케이스에서 더 유연합니다. 다른 경우에는 정상적인 dict입니다. 기본값을 가질 필요가 없거나 특정 키가 없을 때 오류가 발생하면 기본 사전을 사용할 수 없습니다. 따라서 dict이 기본 명령보다 더 중요한 역할을한다는 강력한 이유가 있습니다. –

관련 문제