Python:修改函数以在字典中搜索值
我编写了一个简单的函数,它接收一个字典和一个字符串作为参数。该函数使用该字符串搜索字典,然后返回一个新的带有结果的字典 现在我需要一些帮助来修改这个代码,或者创建一个新函数,当传递一个字符串时,在Python:修改函数以在字典中搜索值,python,dictionary,Python,Dictionary,我编写了一个简单的函数,它接收一个字典和一个字符串作为参数。该函数使用该字符串搜索字典,然后返回一个新的带有结果的字典 现在我需要一些帮助来修改这个代码,或者创建一个新函数,当传递一个字符串时,在key:value对中搜索值,而不是只搜索键。所以,如果我将“1”作为参数传递,我会得到一个新的字典,其中包括cat 希望这是清楚的。提前谢谢 a = {'rainbows': 'xbox', 'solider': 'miltary', 'cat': 1} def searchKeys(aDictio
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'}
好的,一旦你有了一个键
i
,这个键的值就是aDictionary[i]
,所以只要扩展你的测试就可以了
有更多的最佳方法可以做到这一点,它们不需要显式地进行查找,但是上面的方法简单易懂,在很多情况下都应该可以使用。好吧,一旦你有了一个键
i
,该键的值就是aDictionary[i]
,所以只要扩展你的测试就可以了
def searchKeys(aDictionary,searchTerm):
results = {}
for k,v in aDictionary.iteritems():
if searchTerm in k or searchTerm in v:
results[k] = v
return results
有更多的最佳方法可以做到这一点,即不进行显式的查找,但上面的方法简单明了,易于理解,对于许多情况都应该是好的
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的值)不是字符串,因此不能包含其他字符串
或更短:
results = dict((k,v) for k,v in a.iteritems() if searchItem in k or searchItem in v)
但是,它不适用于示例词典,因为
1
(cat的值)不是字符串,因此不能包含其他字符串。对于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)}
或者,如果您确定所有的值都是字符串,您可以只在v中编写
,而不用在Python 2.7的str(v)
中编写,这是最简单的解决方案:
def searchItems(aDictionary, searchTerm):
return {k:v for k, v in aDictionary.iteritems()
if searchTerm in k or searchTerm in str(v)}
或者,如果您确定所有的值都是字符串,您可以只在v
中编写,而不是在str(v)
中编写,这会起作用,但我的解决方案必须使用python 3.2进行编码。而且我认为.iteritems()方法已被弃用。@mystxhobo,然后简单地使用.items()
即可。这会起作用,但我的解决方案必须使用python 3.2进行编码。而且我认为.iteritems()方法已被弃用。@Xhobo,然后简单地使用.items()
。