【发布时间】:2015-11-22 07:37:20
【问题描述】:
有没有办法使用以下方法返回在字典中找到的匹配项的键:
if val in dict.values():
# print the key of the value in the dictionary that matches val
在查找三种不同类型的值时,我尝试使用相同的搜索功能。一个是字母数字,另一个是字符串,第三个是数字。在搜索功能中,我调用了上面的代码。在这个函数中,我搜索包含这些值的已知集合的字典(这三个组合在一起),尝试将从文件中读取的各个值与字典中的这些已知集合进行匹配。我有一个搜索顺序(字母数字、字符串、数字)。字母数字和数字条目是一对一的,但已知字典中的字符串条目是一个列表。我一直假设dict.iteritems() 不会在字符串列表中搜索未知字符串,但val in dict.values() 会。因此使用后者。
根据哪些匹配项(字母数字不匹配,但数字匹配等),我想返回密钥以了解传入数据如何与已知集合匹配。
因此,我没有为每种键类型编写两个或三个单独的函数,而是尝试使用棘手的字典代码将其保持为一个。
编辑:
所以,假设我有这本字典:
dict = {'alphaNumeric':'A7', 'number':'36', 'string':['red','green','blue']}
以及这些不完整的值集来搜索它:
sets = [['A7','',''],[['','36',''], ['','','green']]
我试图设计处理任何搜索的功能:
def searchFun(sets, dict):
for set in sets:
for val in sets:
if val in dict.values():
return val, #KEY WHERE IT WAS FOUND#
【问题讨论】:
-
不能保证存在“the”键这样的东西,因为多个键可能具有相同的值。在这种情况下你想发生什么?
-
我的字典和更大功能的设置方式,重复是不可能的。如果找到该值,它将仅与一个键关联。
-
请记住,使用值来查找键与字典的工作方式相反。你可能有一个XY Problem。
-
是的,它仍然如此。
标签: python dictionary