2012-05-08 7 views
2

は、このエラーでいくつかの助けをしてくださいが必要menu.id)] [ 'menuDishes'] [STR(d.dish.dishType.name)] [ 'dishTypeName'] [STR(d.dish.id)] = {}PythonのUnicodeの 'オブジェクトがサポートされていない項目assignement

def getDishOfTheWeek(): 
    menuDic = Ddict(dict) 
    for menu in Menus.select().where(state = True): 
     menuDic[str(menu.id)]={} 
     menuDic[str(menu.id)]['menuId']=menu.id 
     menuDic[str(menu.id)]['menuName']=menu.name 
     menuDic[str(menu.id)]['menuCountry']=menu.country.name 
     menuDic[str(menu.id)]['menuDishes']={} 
     for d in DishMenuRels.select().where(menu = menu.id).join(Dishes).join(DishTypes).order_by('name') 
      menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)] = {} 
      menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]['dishTypeName'] = d.dish.dishType.name 
      menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]['dishTypeName'][str(d.dish.id)] = {} 
      menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]['dishTypeName'][str(d.dish.id)]['dishId'] = d.dish.id 
      menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]['dishTypeName'][str(d.dish.id)]['dishState'] = d.dish.name 
      menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]['dishTypeName'][str(d.dish.id)]['dishType'] = d.dish.price 
      menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]['dishTypeName'][str(d.dish.id)]['dishName'] = d.dish.country.name 
    print json.dumps(menuDic, indent=5, sort_keys=True) 

おかげ

答えて

7

ここでは、ユニコード文字列のように見える値d.dish.dishType.nameを辞書キー'dishTypeName'に割り当てます。

 menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]\ 
       ['dishTypeName'] = d.dish.dishType.name 

次に、その値にアイテム割り当てを使用します。以下はd.dish.dishType.name[str(d.dish.id)] = {}と同じです。

 menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]\ 
       ['dishTypeName'][str(d.dish.id)] = {} 

言うまでもなくd.dish.dishType.nameは不変の文字列であるので、それは、エラーになります。

これらの割り当てを分割したり、いくつかの機能を使用して分割したりする方がよいでしょうか?これらの長い割り当て文は、あなたが気づいたと思いますが、解釈とデバッグが非常に難しいです。

関連する問題