PYTHON 'Unicode' objet ne prend pas en charge l'élément de détachement
Besoin d'un peu d'aide s'il vous plaît avec cette erreur :
TypeError: "unicode" objet ne prend pas en charge l'élément d'assignation
Ligne : menuDic[str(menu.id)]['menuDishes'][str(d.plat.dishType.nom)]['dishTypeName'][str(d.plat.id)] = {}
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)
Grâce
Vous devez vous connecter pour publier un commentaire.
Ici, vous affectez la valeur
d.dish.dishType.name
, ce qui semble être une chaîne unicode, à la clé de dictionnaire'dishTypeName'
.Ensuite, vous utilisez l'élément de mission sur cette valeur; le ci-dessous est identique à
d.dish.dishType.name[str(d.dish.id)] = {}
.Inutile de dire que, entraîne une erreur, parce que
d.dish.dishType.name
est immuable de la chaîne.Ajouterai-je que vous feriez mieux de briser ces affectations à l'écart, dans des pièces plus petites, peut-être avec quelques fonctions? Ces instructions d'affectation -- je suis sûr que vous avez remarqué -- sont très difficiles à interpréter et à déboguer.