TypeError:'str'对象不支持对象赋值

时间:2015-09-28 04:41:51

标签: python

处理一个python程序,该程序从文本文件中获取输入指令并将它们写入列表中的字典。 当我尝试运行or_inst函数时出现错误:

def or_inst(contextStack, varName, arg1, arg2):
  checkExists(contextStack, arg1)
  checkExists(contextStack, arg2)
  for context in contextStack:
    if (lookup(contextStack, arg1) == 't' or lookup(contextStack, arg2) == 't'):
        assignValue(context, varName, 't')
    else:
        assignValue(context, varName, 'f')

其中contextStack是包含字典上下文的列表 输入指令是:

或d b b

和contextStack是:

('c':'f','b':'f','a':'t')

assignValue是:

def assignValue(contextStack, varName, value):
  print(contextStack, varName, value)
  for context in contextStack:
    context[varName] = value

我认为错误来自于在值位置使用字符串't'(至少从我已经查找过的内容)。我还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

如果ul li ul:parent:after { border: 5px solid transparent; border-left: 8px solid #522; width: 0; height: 0; content: ""; display: inline-block; transform: rotate(90deg); margin-right: 5px; } 中的contextStack确实是字典,那么当您使用 -

进行循环时
assignValue

for context in contextStack: 将是字典中的关键字(我猜这是一个字符串,来自你的错误),你不能context

如果您的目标是将context[varName] = value词典中varnName键的值更改(或添加)到contextStack,那么您应该只使用 -

value