2016-07-20 15 views
0

で複数のキーに同じ値を割り当てます。は、私は私の辞書は次のようになりたい辞書

{'A': {('B','C'): 'D'}}  

私が現在使用しているコードは、この結果を達成するために動作するようには思えません。

dict1 = {} 
with open('foo.csv') as f: 
    reader = csv.DictReader(f) 
    for row in reader: 
     for key in ['B','C']: 
      dict1.setdefault(row['A'], {}).update({row[key]: row['D']}) 

現在、私はこのような結果を得ている:

{'A': {'B': 'D','C': 'D'}} 

基本的に、私はB & Cはその値としてDを持つキーとして表現することにしたいです。

私はここで間違っていますか?誰かがこのコードを修正するのを助けることができますか?

+1

'{ 'B'、 'C​​': 'D' を}'なっていることは何を意味するのか? – njzk2

+0

辞書内のその辞書。したがって、Aは値{'B'、 'C​​': 'D'}を持つ最初のキーです。この値自体は、キー 'B'、 'C​​'、および値 'D'を持つ辞書です。それは意味があります@ njzk2? – kage77

+0

あなたの結果は正しいです、それは正しいです。キーBとCの両方とも値Dを持ちます。 – EoinS

答えて

0

あなたはタプルで、それらを配置したい場所あなたが右の両方のアイテムを置くことができます。

dict1 = {} 
with open('foo.csv') as f: 
    reader = csv.DictReader(f) 
    for row in reader: 
     dict1.setdefault(row['A'], {}).update({(row['B'], row['C']): row['D']}) 
    #            ^  ^
+0

これは私が探していたものです。ありがとう! – kage77

関連する問題