我写了一个简单的函数,它接收字典和字符串作为参数。该函数使用字符串搜索字典,然后返回带有结果的新字典。
现在我需要一些帮助修改此代码或创建一个新函数,在传递字符串时,在key:value
对中搜索值,而不是仅使用键。因此,如果我传递'1'作为参数,我会得到一个包含cat的新词典。
希望这很清楚。提前致谢。
a = {'rainbows': 'xbox', 'solider': 'miltary', 'cat': 1}
def searchKeys(aDictionary,searchTerm):
results = {}
for i in aDictionary:
if searchTerm in i:
results[i] = aDictionary[i]
return results
###searchKeys(a,'r') -> {'rainbows': 'xbox', 'solider': 'miltary'}
答案 0 :(得分:3)
def searchKeys(aDictionary,searchTerm):
results = {}
for k,v in aDictionary.iteritems():
if searchTerm in k or searchTerm in v:
results[k] = v
return results
或更短:
results = dict((k,v) for k,v in a.iteritems() if searchItem in k or searchItem in v)
然而,它不适用于您的示例字典,因为1
(cat
的值)不是字符串,因此不能包含另一个字符串。
答案 1 :(得分:1)
使用Python 2.7,这是最简单的解决方案:
def searchItems(aDictionary, searchTerm):
return {k:v for k, v in aDictionary.iteritems()
if searchTerm in k or searchTerm in str(v)}
或者,如果您确定所有值都是字符串,则只需编写in v
而不是in str(v)
。
答案 2 :(得分:0)
好吧,一旦你有一个密钥i
,该密钥的值为aDictionary[i]
,所以只需扩展你的测试。
有更多最佳方法可以做到这一点,不会明确地进行查找,但上述内容是直截了当且易于理解的,并且在许多情况下应该没问题。