2017-12-06 22 views
0

複数の.csvファイルを辞書に格納し、キーと値を別々に印刷する方法がわかりません。私は6つの.csvファイルをすべて別々の情報を含んでおり、それらを辞書にロードしてからコードを書いて、そのキーを関連付けるさまざまな値からキーを分離できるようにしなければなりません。 「動物」は「餌食、餌食など」を食べる。.csvファイルを辞書にロードし、キーと値を個別に印刷します。

私は別々に各ファイルを行う必要があると思うので、キー/値の各リストに対して適切な出力を得るために6つのループがありますが、試したことはすべてエラーメッセージです。ここで はcsvファイルと予想される出力の例です:

file1.csv:

Rabbit,Grass 
Snake,Mouse 
Mouse,Grass 

出力:

Predator and prey: 
"Rabbit eats grass"  
"Snake eats mouse" 
"Mouse eats grass" 

これは一つのファイルのために、これまで私が持っているコードです。

import sys 
import csv 

inf = open("file1.csv", "r") 
reader = csv.reader(inf) 

data = {} 
for row in reader: 
    for i in data.keys(): 
     print(data[i], "eats", i) 

私はそれが正しいとは知っていますが、私は辞書でどのようにキーを分離するのか分かりませんその.csvファイル。私はどんな助けも大いに評価されるようにコーディングに新しいです! :) 私はpython3を使用しています。 ありがとうございます!べき

import csv 

with open("file1.csv", "r") as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print(row[0], "eats", row[1]) 

+0

を行うことができ、迅速(と少し遅い)の方法は、単に '[csv.DictReader'を使用することです](https://docs.python.org/2/library/csv.html#csv.DictReader)を使用してCSVを辞書として読み込み、それらをマージして累積結果を生成することができます。 – zwer

+0

ありがとう!私はオンラインで見ているもののために働いていないので、私はpython3でこれのためのフォーマットについて少し不明です。 – DallaxT

+0

2つのcsvファイルと予想される出力のサンプルデータを表示します –

答えて

1

まあ、何もキー(ヘッダフィールド)、またはあなたのCSVには何も、単純な値のペアとあなただけの個別非常に簡単です、各行の要素を印刷したいはありませんプロデュース:

Rabbit eats Grass 
Snake eats Mouse 
Mouse eats Grass

UPDATE:あなたは辞書にデータを保存したい場合は、単に値の一つとして、キーと第二の値として最初の値を使用して、例えば:

import collections 
import csv 

# we'll use defaultdict to save us some trouble initializing for each predator 
predators = collections.defaultdict(set) # our final dict, use set to filter out duplicates 

files = ["file1.csv", "file2.csv", "file3.csv"] # all of your CSV files 

for file in files: # go through each CSV file... 
    with open(file, "r") as f: # open it... 
     reader = csv.reader(f) # make a CSV reader 
     for row in reader: # go through it line by line 
      predators[row[0]].add(row[1]) # add it to the predators dict 

for predator in predators: 
    print(predator, "eats", predators[predator]) 
+0

ありがとう!しかし、ファイルからのすべてのデータが、獲物関係を説明する辞書にロードされるように、私はそれを行うと仮定しています。辞書のキーは、捕食者の名前で、辞書の値は食物のリストになります。 – DallaxT

+0

@DallaxT - 要素を印刷する代わりに辞書を作成するだけで、更新を確認してください。 – zwer

+0

大丈夫、ありがとうございます!だから、各ファイルdictを初期化するのではなく、私はデフォルトを使うことができますか? – DallaxT

0

チェックアウトはpandasです。 この種のものには非常に良い。

df = pd.read_csv('file1.csv', names=['Predator','Prey']) 
df['statement'] = df.Predator + ' eats ' + df.Prey 

for s in df.statement: 
    print(s) 

あなたは{「捕食」:「獲物」}の辞書をしたい場合は、

dic = {pred:prey for pred,prey in df[['Predator','Prey']].values} 
+0

ありがとう!私はpython3でこのフォーマットが許されているのかどうかはわかりませんが、私は= names []というエラーメッセージを受け取ります。 – DallaxT

+0

エラーは何ですか?私はpython3を持って、私の作品... – RSHAP

関連する問題