Python 当键是元组时搜索字典键

Python 当键是元组时搜索字典键,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,这将返回None。我知道我可以将它们分开并生成多个具有相同值的键,但如果可以,我真的希望避免这样做。我可以吗 我还希望能够搜索值(也可能是元组)并获得相应的键。如果您不需要按整个元组进行搜索(“红色”、“蓝色”、“紫色”),那么只需稍微不同地构建字典即可: sample = {('red', 'blue', 'purple') : 'color', 'redo' : 'again', 'bred' : 'idk', 'greeting' : ('hi', 'hello')} def searc

这将返回
None
。我知道我可以将它们分开并生成多个具有相同值的键,但如果可以,我真的希望避免这样做。我可以吗


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

如果您不需要按整个元组进行搜索
(“红色”、“蓝色”、“紫色”)
,那么只需稍微不同地构建字典即可:

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'))
在这里使用
iteritems()
会对您有所帮助。更新您的
search()
方法,如下所示。应该行得通

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

如果字典中多次出现
c

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
这将返回字典中匹配值的列表



希望这有帮助!:)

我同意,但问题明确指出“我可以将它们分开并生成多个具有相同值的键,但如果可以,我真的希望避免这样做。”我正在创建一本任意语言的词典,我计划将其翻译成英语(包括同义词等)。OP是一个简单的例子,我希望它能指出我所面临的问题,但我对它完全陌生,我想我不能用我想要的方式来表达它。这是个好主意,但它在我的情况下不起作用,因为我会有多个值的键(元组)和多个值的键(元组)。很抱歉,这还是一个新问题。@BlackKnight我已经更新了答案,改动很小。让我知道,这能满足你的需要吗。如果没有,您能否在问题中添加一个更广泛的示例dict?示例={('red','blue','purple'):'color','redo':'reach','red':'idk'}将是一个更好的示例。如果某些单词的某些部分与其他单词的某些部分不匹配,您的答案会有所帮助。@BlackKnight会根据您的需要进行更新。请再检查一遍。
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