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