2014-01-28 2 views
8

Я пытаюсь создать/обновить словарь. У меня есть псевдонимы в качестве ключей в temp_dict и поиск идентификаторов для добавления."ТипError: объект unicode не поддерживает назначение элемента" в словарях

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

d1 = {u'status': u'ok', u'count': 1, u'data': [{u'nickname': u'45sss', u'account_id': 553472}]} 


    temp_dict = {} 
    for key, value in d1.iteritems(): 
     if "data" == key: 
      for dic2 in value: 
        x = dic2['nickname'] 
        y = dic2['account_id'] 
        temp_dict[x] = y; 

Моя ошибка:

Traceback (most recent call last): 
File "untitled.py", line 36, in <module> 
get_PlayerIds_Names_WowpApi_TJ_() #Easy going. Some issues with case letters. 
File "g:\Desktop\Programming\WOWP API\functions.py", line 44, in get_PlayerIds_Names_WowpApi_TJ_ 
check_missing_player_ids(basket) 
File "g:\Desktop\Programming\WOWP API\functions.py", line 195, in check_missing_player_ids 
temp_dict[x] = y; 
TypeError: 'unicode' object does not support item assignment 

Есть несколько SO записи о той же ошибки. Но никакие из них не связаны с такими манипуляциями с словарями.

+2

Полный отслеживающий пожалуйста ... – mhlester

+1

Нужно видеть d1. –

+1

Казалось бы, 'temp_dict' не словарь, а строка юникода. У вас неправильное назначение где-то до строки 195 в functions.py. –

ответ

8

Скорее всего, вы поставили юникод строку в temp_dict где:

>>> temp_dict = u'' 
>>> dic2 = {u'nickname': u'45sss', u'account_id': 553472} 
>>> x = dic2['nickname'] 
>>> y = dic2['account_id'] 
>>> temp_dict[x] = y 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'unicode' object does not support item assignment 

INIT это с пустой Dict и все будет работать:

>>> temp_dict = {} 
>>> temp_dict[x] = y 
>>> temp_dict 
{u'45sss': 553472} 
+0

Да, спасибо. У меня был цикл, который берет элементы списка и создает словарные записи. У меня там была ошибка. – Aidis

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