2009-07-31 3 views
2

У меня есть словарь с одним ключом и двумя значениями, и я хочу установить каждое значение в отдельную переменную.Базовый словарь на языке Python

д = { 'ключ': ('значение1, значение2'), 'ключ2': ('значение3, value4'), 'ключ3': ('value5, value6')}

Я попробовал d [key] [0] в надежде, что он вернет «значение1», но вместо этого вернет «v»

Любые предложения?

+0

Это не «два значения», это одно значение: строка. – Javier

+0

Ваше редактирование вопроса привело к тому, что ответы больше не имеют никакого смысла ... –

ответ

16

Лучшее решение для хранения значения как два кортежа:

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

Таким образом, вы не должны разделить каждый раз, когда вы хотите получить доступ к значениям.

+0

Хорошо, я согласен Я думаю, что это тоже лучшая идея, но я все еще в неведении относительно синтаксиса, необходимого для извлечения значений отдельно? – joepour

+1

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

+0

@Adam Bernier: Я пробовал это, но он дает мне первую букву каждой строки ...? Помогите! – joepour

4

попробовать что-то вроде этого:

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

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

list[0] будет "value1" и list[1] будет "значение2".

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

Для получения двух значений и присвоить их значение1 и значение2:

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

По словам zenazn, я не считал бы, что это будет разумно структура данных, используя кортеж или класс для хранения нескольких значений будут лучше.

0

Способ вы храните ваши ценности, вам нужно что-то вроде:

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

или перебрать все значения:

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

Но, если вы можете, вы должны, вероятно, следуйте предложению zenazn о сохранении ваших значений в качестве кортежей и избегайте необходимости делиться каждый раз.

Смежные вопросы