【发布时间】:2015-09-09 12:34:16
【问题描述】:
我有一个对象字典,其中包含电子表格中的“名称/范围”。在处理电子表格时,我需要更新与范围关联的值。
保存此信息的类如下所示:
class varName:
name = None
refersTo = None
refersToR1C1 = None
value = None
def __init__(self, name, refersTo, refersToR1C1, value):
self.name = name
self.refersTo = refersTo
self.refersToR1C1 = refersToR1C1
self.value = value
我按如下方式创建字典:
staticNames = {}
wbNames = wb.Names
for name in wbNames:
(nSheet, nAddr) = name.RefersTo.split("!")
print "Name: %s Refers to: %s Refers to R1C1: %s Value: %s " % (name.Name, name.RefersTo, name.RefersToR1C1, wSheets(nSheet.replace('=', '')).Range(nAddr).value)
staticNames[name.Name] = varName(name.Name, name.RefersTo, name.RefersToR1C1, wSheets(nSheet.replace('=', '') ).Range(nAddr).value)
它似乎工作正常。我可以在调试中看到字典和包含的对象。当我回去根据处理电子表格更新字典中的对象时,我迷路了。 我称这个函数为:
def updateStaticNames(ws, r, c, val_in, staticNames):
for sName in staticNames:
if sName.refersToR1C1() == "=" + ws.Name + "!R" + str(r) + "C" + str(c):
sName.value = val_in
return None
staticNames 指的是包含名称/范围对象的字典。
我期待sName 包含varName 类型的对象。但可惜它包含一个字符串。我做错了什么?
【问题讨论】:
-
for sName in staticNames:迭代 keys(它是字典,而不是列表),所以sName将是name.Name的任何内容...
标签: python loops dictionary object