需要一些帮助,请注意以下错误:
TypeError:'unicode'对象不支持项目分配
Ligne:menuDic [str(menu.id)] ['menuDishes'] [str(d.dish.dishType.name)] ['dishTypeName'] [str(d.dish.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)
Run Code Online (Sandbox Code Playgroud)
谢谢
在这里,您将值d.dish.dishType.name(看起来是一个unicode字符串)分配给字典键'dishTypeName'.
menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]\
['dishTypeName'] = d.dish.dishType.name
Run Code Online (Sandbox Code Playgroud)
然后,您对该值使用项目分配; 以下是相同的d.dish.dishType.name[str(d.dish.id)] = {}.
menuDic[str(menu.id)]['menuDishes'][str(d.dish.dishType.name)]\
['dishTypeName'][str(d.dish.id)] = {}
Run Code Online (Sandbox Code Playgroud)
不用说,这会导致错误,因为它d.dish.dishType.name是一个不可变的字符串.
我可以补充一点,你最好将这些作业分成更小的部分,也许还有一些功能吗?这些冗长的赋值语句 - 我相信你已经注意到了 - 很难解释和调试.
| 归档时间: |
|
| 查看次数: |
12252 次 |
| 最近记录: |