2017-11-17 18 views
1

次のコードを使用して辞書を逆転させています。ソースディクショナリのキーの中には他のエントリと同義語がありますので、反転キーの値が複数ある場合は、例えばcommandant = captainを追加しようとしていますので、capitano =キャプテンも追加してキャプテンを達成しようとしています:commandante、 capitano。私は単純に私の問題を解決するだろうと思ったdefaultdictを使用しているが、私はcontinuely属性のエラーを取得:「str」はオブジェクトが属性「を追加」python辞書属性のエラー

def form_eng_dict(): 
    #temp_dict = pickle.load(open("penult_dict.txt", "rb")) 
    temp_dict ={'commandante': 'captain', 'capitano':'skipper,captain', 'alaggio': 'towing, hauling'} 
    try: 
     e_dict = pickle.load(open("penult_eng.txt", "rb"))  
    except: 
     e_dict = defaultdict(list) 

    for key, value in temp_dict.items(): 
     for word in value.split(','): 
      word.strip(' ') 
      #print(word) 
      if word not in e_dict: 
       e_dict[word] = key 
      else: 
       e_dict[word].append(key) # causes error 

    for key, value in e_dict.items(): 
     print(key, value) 
    pickle.dump(temp_dict, open("penult_eng.txt", "wb")) 

私は私が間違ってやって、どのように解決することになっている内容が不確かだがありません私は文字列をどのように作成しているのか分かりません。私は絶対に基本的な誤りを作り出していると確信して、あなたが私の誤りを指摘すると、本当に馬鹿だと感じるでしょう!しかし、あなたの時間

答えて

2

修正のための感謝:

e_dict[word] = key 

へ:

e_dict[word] = [key] 

は、あなたが内側に[key]で初期リストを作成する必要がありますので、追加することができるようにしたい - そう、あなたがしています文字列に追加しようとしています:

Attribute error: 'str' object has no attribute 'append'

+0

私は愚かな気がすることを知っていました! – user1478335

関連する問題