Базовый вопрос по словарю Python - PullRequest
2 голосов
/ 31 июля 2009

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

d = {'ключ': ('значение1, значение2'), 'key2': ('value3, value4'), 'key3': ('value5, value6')}

Я попробовал d [key] [0] в надежде, что он вернет "value1", но вместо этого он вернет "v"

Есть предложения?

Ответы [ 5 ]

16 голосов
/ 31 июля 2009

Лучшее решение - сохранить вашу ценность в виде двух кортежей:

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

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

4 голосов
/ 31 июля 2009

Попробуйте что-то вроде этого:

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

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

list[0] будет «значением1», а list[1] будет «значением2».

1 голос
/ 31 июля 2009

Чтобы получить два значения и присвоить им значение1 и значение2:

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

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

1 голос
/ 31 июля 2009

Я бы предложил хранить списки в вашем словаре. Было бы намного легче ссылаться. Например,

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] 
0 голосов
/ 01 августа 2009

Как вы храните свои значения, вам понадобится что-то вроде:

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

или для перебора всех значений:

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

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

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