我对Python相当陌生,我要做的是:
这是我的代码:
jobChangeMap=dict() # Maps the changed job name. Format will be jobset,originaljob,jobNumber:jobset,changedjob,jobnumber
jobValues = []
if(not jobsetName in jobsetJobMap.keys()):
logger.debug("{0} not found as a key. Adding key and value pair".format(jobsetName))
jobsetJobMap.update({jobsetName:jobName+","+jobNumber})
logger.debug(jobsetJobMap)
else:
jobValues = []
jobValues[:]=[]
logger.debug("{0} already found as a key. Getting list of values for key".format(jobsetName))
jobValues=jobsetJobMap[jobsetName]
logger.debug("Number of values for {0} is {1}".format(jobsetName,jobValues.count))
logger.debug(jobsetJobMap)
if(not jobName in jobValues):
myJobName=jobName+","+jobNumber
logger.debug("Size before adding: {0}".format(len(jobValues)))
jobValues.append(myJobName)
这是引发以下错误的行:
^{2}$为什么Python抱怨jobValues是str对象,尽管我明确地将它定义为type list?在
关于你的错误。@杰兹回答完美地解释了这一点。在
显然,您对python还不熟悉,而且您已经在Java/C世界中生活了太久。JK。在
我为什么这么说?在
首先,您使用的变量命名约定(CamelCase)是so[Java/C#]-样式。你应该喜欢python上的snack_case。有关更多信息,请参阅Style Guide for Python Code。在
在这类程序中使用python是正确的。因为python在处理此类问题时非常强大。但是,您并没有充分利用python的能力。这不应该占用这么多代码行。在
保持数据结构的一致性。在
jobsetJobMap
中,存储的是字符串或数组。您可能希望将它们全部保存为数组,即使它们只包含一个元素。异构数据导致更多的代码,更多的代码等于更多的bug。在我会建议这样的。在
我想我找到了解决这个问题的方法。这可能不是最聪明的代码,但这是我用Python解决方案的尝试
jobsetJobMap
的值根据这一行显示为字符串:它用一个新的字符串
^{pr2}$jobName+","+jobNumber
覆盖条目jobName+","+jobNumber
,稍后将其检索并设置为jobValues
的值:它用一个字符串覆盖}方法,因此会出现错误消息。在
jobValues
的前一个list
值,字符串没有{从变量名推断出你的意图,我认为你想做的是:
它将作业描述符附加到与
jobsetJobMap
字典中的键jobsetName
关联的列表(如果需要,隐式创建列表)。在相关问题 更多 >
编程相关推荐