2009-07-31 8 views
2

私は1つのキーと2つの値を持つ辞書を持って、私は別の変数に各値を設定したい。基本的なPythonの辞書の質問

I = {( '値1、値2')、 'KEY2':( 'VALUE3、value4')、 'KEY3'( 'VALUE5、value6') 'キー'}

D "value1"を返すことを期待してd [key] [0]を試しましたが、代わりに "v"を返します

何か提案がありますか?

+0

「2つの値」でない場合は、1つの値、つまり文字列です。 – Javier

+0

質問を編集した結果、答えがもはや無意味になりました... –

答えて

16

よりよい解決策は、2つのタプルとして、あなたの値を格納することです:

d = {'key' : ('value1', 'value2')} 

あなたが値にアクセスするたびに分割する必要はありませんこの方法。

+0

私はこれも良いアイデアだと思いますが、別に値を抽出するために必要な構文についてはまだ暗いですか? – joepour

+1

@Joe: 'd ['key'] [0]'と 'd ['key'] [1]' – bernie

+0

@アダム・ベルニエ:私はそれを試みたが、それは私に各文字列の最初の文字を与える...?助けて! – joepour

4

このような何か試してみてください:

d = {'key' : 'value1, value2'} 

list = d['key'].split(', ') 

list[0]は "VALUE1" になり、list[1]は "VALUE2" になります。

1

あなたの辞書にリストを保存することをお勧めします。参照するのがずっと簡単になるでしょう。例えば、

from collections import defaultdict 

my_dict = defaultdict(list) 
my_dict["key"].append("value 1") 
my_dict["key"].append("value 2") 

print my_dict["key"][1] 
1

は、2つの値を取得し、value1とvalue2のためにそれらを割り当てるには:zenaznで言ったように

for v in d.itervalues(): 
    value1, value2 = v.split(', ') 

、私が使用して、これは賢明なデータ構造であることを考えていませんタプルまたは複数の値を格納するクラスを使用する方が良いでしょう。

0

あなたが値を格納している方法で、あなたのようなものが必要です:

value1, value2 = d['key'].split(', ') 
print value1, value2 

またはすべての値を反復処理するために:

for key in d: 
    v1, v2 = d[k].split(', ') 
    print v1, v2 

しかし、あなたができる場合、あなたはおそらくべき値をタプルとして保存するというzenaznの提案に従い、毎回分割する必要はありません。