Python 字典链式实现中的值检查

Python 字典链式实现中的值检查,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一个字典,它对具有相同键的值使用链接,这意味着dict[key]=[object1,object2,object3,…,objectn] 我有两个对象year0和year1。我需要找到字典中某个键处是否有year0和year1 如果year0或year1不可用,则我应按下一个键。注:year0和year1是两个不同的对象 不幸的是,我不断地遇到各种错误,比如赋值前引用的对象,或者我无法转到下一个键 以下是我的代码以了解更多信息: rateLst = [] if year1 > year

我有一个字典,它对具有相同键的值使用链接,这意味着
dict[key]=[object1,object2,object3,…,objectn]

我有两个对象
year0
year1
。我需要找到字典中某个键处是否有
year0
year1

如果
year0
year1
不可用,则我应按下一个键。注:
year0
year1
是两个不同的对象

不幸的是,我不断地遇到各种错误,比如赋值前引用的对象,或者我无法转到下一个键

以下是我的代码以了解更多信息:

rateLst = []
if year1 > year0: 
    for reg in data.keys():
        slots = data[reg] #slots = [(object[year, index]), object[year, index]
        for value in slots: #value = object[year, index]
            if value.year == year0: 
                index0 = value.index 
            if value.year == year1:
                index1 = value.index
        if index1 is None or index0 is None: #error occurs even if I initialize the values as well it doesn't work
            pass
        else:
            gRate = cagr([index0, index1], year1 - year0)
            rateLst.append((reg, gRate))
return rateLst

感谢您在获得插槽后尝试初始化index0=None和index1=None。如果您的条件value.year==year0或value.year==year1都不为真,那么将永远不会创建index0和index1。
rateLst.append((reg,gRate))
-您没有为
reg
@wwii分配任何内容谢谢,我错过了。修复了OP之前代码中的错误,但似乎在找到两者后需要重置
index0,index1
,或者在迭代完成时在
rateLst
中出现错误条目。@wwii true。实际上,代码甚至不等待index1和index0。我想还有更多的事情我不知道,所以,我只是建议不要在赋值错误之前使用变量。
rateLst = []
if year1 > year0: 
    index0, index1 = None, None
    for reg, slots in data.items():
        #slots = data[reg] #slots = [(object[year, index]), object[year, index]
        for value in slots: #value = object[year, index]
            if value.year == year0: 
                index0 = value.index 
            if value.year == year1:
                index1 = value.index
        if index1 is None or index0 is None: #error occurs even if I initialize the values as well it doesn't work
            pass
        else:
            # You are using OR operator above so there is a chance that index0 or index1 would be None, not sure if this is intended or not
            gRate = cagr([index0, index1], year1 - year0)
            rateLst.append((reg, gRate))
return rateLst