簡體   English   中英

迭代對象字典

[英]Iterate over dictionary of objects

我有一個對象字典,其中包含電子表格中的“名稱/范圍”。 在處理電子表格時,我需要更新與范圍關聯的值。

保存此信息的類如下所示:

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是指包含 Name/Range 對象的字典。 我希望sName包含一個varName類型的對象。 但可惜它包含一個字符串。 我究竟做錯了什么?

for foo in some_dict遍歷字典的,而不是它的值。

d = {'a': 1, 'b': 2, 'c': 3}
for dd in d:
    print(dd)
# gives a; b; c

你可能想for foo in some_dict.values()

for dd in d.values():
    print(dd)
# gives 1; 2; 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM