Python: key in dict 还是报KeyError

问题描述 投票:0回答:2

我在python中发现了一个奇怪的错误。 字典中的键,但仍然报告 KeyError。 在列表(字典)中键入但不在字典中键入,为什么????

这是代码:

    check_key = (predicate, item)
    print(type(predicate))
    print(type(item))
    print(type(self.id_of_item))
    print()
    print("check_key: {}".format(check_key))
    print("self.id_of_item: {}".format(self.id_of_item))
    print("list(self.id_of_item): {}".format(list(self.id_of_item)))
    print()
    print("check_key in self.id_of_item?            {}".format(check_key in self.id_of_item))
    print("check_key in list(self.id_of_item)?      {}".format(check_key in list(self.id_of_item)))
    print("check_key == list(self.id_of_item)[-1]?  {}".format(check_key == list(self.id_of_item)[-1]))

这是输出:

<class 'str'>
<class 'sympy.core.add.Add'>
<class 'dict'>

check_key: ('Equation', ll_bc - 4.0)
self.id_of_item: {('Equation', ll_bc - 4.0): 87}
list(self.id_of_item): [('Equation', ll_bc - 4.0)]

check_key in self.id_of_item?            False
check_key in list(self.id_of_item)?      True
check_key == list(self.id_of_item)[-1]?  True

如何修改我的代码以通过键“check_key”访问值?谢谢!

python keyerror
2个回答
0
投票

check_key 不是字典的键。 check_key 是一个元组,字典有一个字符串作为键。 使用

in
运算符告诉您变量是否是键。它不是。

从字典中创建列表会将字典转换为元组列表:(键,值)。

将字典项转为元组后,再匹配check_key,也就是一个元组。所以,你可以在列表中找到 check_key


0
投票

这不是错误。

例如

id_of_item= {('Equation',  4.0): 87}  # this is a dictionary

check_key = ('Equation',  4.0)  # this is the key and it is of type tuple

check_key in id_of_item 
#True

check_key in list(id_of_item)  
#True

check_key == list(id_of_item)[-1]
#True
© www.soinside.com 2019 - 2024. All rights reserved.