当键是元组时搜索字典键

Bla*_*ght 5 python dictionary python-3.x

sample = {('red', 'blue', 'purple') : 'color', 'redo' : 'again', 'bred' : 'idk', 'greeting' : ('hi', 'hello')}

def search(c):
    if c in sample.keys():
        return sample[c]

print(search('red'))
Run Code Online (Sandbox Code Playgroud)

这返回None. 我知道我可以将它们分开并制作具有相同值的多个键,但如果可以的话,我真的很想避免这样做。我可以吗?

而且我还希望能够搜索值(也可能是元组)并获得相应的键。

bha*_*waj 5

使用iteritems()在这里会对您有所帮助。按如下方式更新您的search()方法。应该可以正常工作。

def search(c):
    for k, v in sample.iteritems():
        if type(k) in [list, tuple, dict] and c in k:
            return v
        elif c == k:
            return v
Run Code Online (Sandbox Code Playgroud)

如果c字典中多次出现 ,

def search(c):
    found = [ ]
    for k, v in sample.iteritems():
        if type(k) in [list, tuple, dict] and c in k:
            found.append(v)
        elif c == k:
           found.append(v)
    return found
Run Code Online (Sandbox Code Playgroud)

这将返回字典中匹配值的列表。


希望这可以帮助!:)


don*_*mus -1

如果您不需要按整个元组进行搜索('red', 'blue', 'purple'),那么只需稍微不同地构建您的字典即可:

sample = {e: v for k, v in {('red', 'blue', 'purple') : 'color'}.items()
               for e in k}
Run Code Online (Sandbox Code Playgroud)