2013-06-10 1 views
1

Я получаю объект 'str', не имеет атрибута 'get', когда я пытаюсь извлечь значение ключа, которое в свою очередь является именем словаря. Как сообщить python, что возвращаемая строка является словарем?Объект 'str' не имеет атрибута 'get' - Как сообщить python, что возвращаемая строка является словарем?

choices = ['Country','State','Town'] 
chosen = 'Country' 
country_color = {'Netherlands':'Red','Sweden':'Brown','Ukraine':'Yellow','China':'Pink','Japan':'Black'} 
state_color = { .... } 
town_color = { .... } 

color_data = {'Country': ['col1','country_color'] ,'State': ['col2','state_color'] ,'Town': ['col3','town_color']} 
    ..... 

color1 = lambda v: country_color.get(v['col1']) # this works 
color2 = lambda v: country_color.get(v[color_data.get(chosen)[0]]) # this too works 
color3 = lambda v: color_data.get(chosen)[1].get(v[color_data.get(chosen)[0]]) # but this doesn't work; error - 'str' object has no attribute 'get' 

    .... 

ответ

3

color_data.get(chosen)[1] возвращается country_color, строка, как вы уже поняли.

Если вы хотите перейти в словарь country_color, почему бы не изменить значение в color_data :)?

color_data = {'Country': ['col1', country_color] # Notice how it's not a string anymore 
+0

Почему я не думаю об этом? Заставляет меня чувствовать себя очень глупо. Благодаря!!! Работает!!! – richie

+0

@richie Ха-ха, нет проблем: D! – TerryA

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