使用字符串搜索字典键,而不是对象

时间:2014-06-05 16:35:33

标签: python string dictionary key

我试图从词典中提取键值,但是当我搜索键时,我想使用'字符串'而不是一个对象。现在,使用dict.get,它告诉我需要搜索带有对象的键,那么是否有其他内置函数或任何可以搜索带字符串而不是对象的键的东西?

dict.get('someKey',' ')# looks for the key 'someKey'. If that key isn't found, a blank ' ' is returned

回答后:

谢谢大家!所以它看起来像:

yourDictionary.get('someKey',' ')# looks for the key 'someKey' in dictionary 'yourDictinoary'. If that key isn't found, a blank ' ' is returned

2 个答案:

答案 0 :(得分:0)

您的混淆是由于您调用dict.get()的方式 - 它是一个实例方法,因此第一个参数(如果在类dict上调用)应该是一个字典实例。否则,您将获得TypeError

>>> dict.get("key", "default")

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    dict.get("key", "default")
TypeError: descriptor 'get' requires a 'dict' object but received a 'str'

如果您在Python中使用过OOP,请注意这与您为类编写的方法中的隐式第一个参数self有关。

您可以通过明确传递实例来解决此问题:

>>> d = {}
>>> dict.get(d, "key", "default")
'default'

或者(并且最好),在实例本身上调用方法:

>>> d.get("key", "default")
'default'

至于你的评论,你可以或者使用以下任何一种:

try:
    result = d["key"]
except KeyError:
    result = "default"

if "key" in d:
    result = d["key"]
else:
    result = "default"

result = d["key"] if key in d else "default"

result = d.get("key", "default")实现相同。

答案 1 :(得分:0)

问题是您正在尝试在dict类型中搜索密钥。这就是解释器说你需要用对象搜索密钥的原因。

首先应该创建一个dict对象,然后在其中搜索键(当然,如果你想找到一些东西,在添加一些数据之后)。

d = dict()  # or d = {}
d['someKey'] = 1
print d.get('someKey', ' ')  # will print 1
print d.get('otherKey', ' ')  # will print a space