2017-10-19 4 views
1

私はtxtファイルを持っており、値を抽出して辞書として整理する必要があります。
必要な形式は次のとおりです。ここで{'Alabama': 'Auburn', Alabama: 'Florence'....'Wyoming': 'Laramie'}辞書にクリーンなデータを追加しているときに重複値を取得する

例えば{State: Town}

は私のコードです:

with open('my.txt') as file: 
    output = [] 
    current_state = "" 
    region = "" 
    for line in file: 
     if (len(line.split("[edit]")) == 2): 
      current_state = line.split("[edit]")[0] 
     else: 
      region = line.split(" (")[0] 
     if (region != ""): 
      output.append([current_state, region]) 
    return output 

しかし、私のコードは、私はそれがやりたいことはありません。私は以前に抽出された "領域"の値を格納し、それを次の状態に追加しているように感じます。だから、ロジックに何か問題があり、正確に何がわからないのですか?あなたは、私が「フェアバンクス」2回を取得しています見ることができるように

[['Alabama', 'Auburn'], 
['Alabama', 'Florence'], 
['Alabama', 'Jacksonville'], 
['Alabama', 'Livingston'], 
['Alabama', 'Montevallo'], 
['Alabama', 'Troy'], 
['Alabama', 'Tuscaloosa'], 
['Alabama', 'Tuskegee'], 
['Alaska', 'Tuskegee'], 
['Alaska', 'Fairbanks'], 
['Arizona', 'Fairbanks'], 
['Arizona', 'Flagstaff'], 
['Arizona', 'Tempe'], 
['Arizona', 'Tucson'],...] 

、まずそれが正しいアラスカ、に追加され、第二、正しくないである、アリゾナに追加なっています。私はこれが私のすべての州に起こっています。

... 
['Alaska', 'Fairbanks'], 
['Arizona', 'Fairbanks'], 
... 
['Wisconsin', 'Whitewater'], 
['Wyoming', 'Whitewater'], 
['Wyoming', 'Laramie']] 
+0

あなたは辞書ではなくリストを使用しています。リストは角括弧 '[...]'を使用し、中括弧 '{...} 'を使用します。 –

答えて

0

あなたは地域をリセットしないので、以前の結果が保存されます。

if (region != ""): 
    output.append([current_state, region]) 

変更

with open('my.txt') as file:前に、

country = dict()を入れて、ループ内で、あなたのように使用することができ、

if (region != ""): 
    output.append([current_state, region]) 
    region = '' 
+0

ありがとうございます@ギャラクシーン!それは働いた:) – lilia

+0

@リリア問題ではない:) – galaxyan

+0

@lilia好きな場合それを受け入れる:) – galaxyan

0

あなたが本当にその後、辞書に値を入れたい場合に

if (region != ""): 
     output.append([current_state, region]) 
     if current_state in country: 

      country[current_state].append(region) 
     else: 
      country[current_state] = [] 
      country[current_state].append(region) 
     region = '' 

ご質問の場合region = ''が問題を解決しますが、上記のコードが役立つ辞書を置くと、特定のキーのリストが作成されます。ハッピーコーディング!

関連する問題