Python 如果字典中的列表中存在值,则返回键

Python 如果字典中的列表中存在值,则返回键,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有一本这样的字典: features = {"CAMERA": ['cam', 'Cam', 'camera', 'cameras', 'kameras', 'kamras'], "BATTERY": ['batterie', 'battery']} 我想检查这些值中是否存在某个值。如果是,我想归还钥匙。我怎样才能做到 例如: 如果“因果报应”在功能中,我想获得关键的“照相机”。如其他答案中所述,您所要求的可以通过循环查看功能并检查所需字符串是否在任何

我有一本这样的字典:

features = {"CAMERA": ['cam', 'Cam', 'camera', 'cameras', 'kameras', 'kamras'], "BATTERY": ['batterie', 'battery']}
我想检查这些值中是否存在某个值。如果是,我想归还钥匙。我怎样才能做到

例如:


如果“因果报应”在功能中,我想获得关键的“照相机”。

如其他答案中所述,您所要求的可以通过循环查看
功能
并检查所需字符串是否在任何列表中来解决。例如:

def get_keys(features, value):
    return tuple(
        k
        for k, values in features.items()
        if value in values
    )

print(get_keys(features, 'kamras')) # prints ("CAMERA",)
或者,如果您想要一个单键,
获取密钥(功能“kamras”)[0]

但是,如果您要经常这样做,最好先将字典反转,创建一个新的
反转的
dict:

inverted = {
    value: key
    for key, values in features.items()
    for value in values
}

print(inverted) # prints {'cam': 'CAMERA', 'Cam': 'CAMERA', 'camera': 'CAMERA', 'cameras': 'CAMERA', 'kameras': 'CAMERA', 'kamras': 'CAMERA', 'batterie': 'BATTERY', 'battery': 'BATTERY'}
这样,您可以简单地编写:

print(inverted['kamra']) # prints "CAMERA"

只需在dict items上循环:
[features.items()中的key for key,val_list]如果val_list中的'kamras',
已经说过,如果这是您的典型使用模式,那么您的键/值是反向的。字典用法不好-如果您想查找键的值,它们是好的,要通过一个值来查找键,您需要迭代它,直到找到或未找到为止。最好有一本字典
{“cam”:“CAMERA”,“CAMERA”:“CAMERA”,…}
如果你把字典倒过来会更好:
{“cam”:“CAMERA”,“kamras”:“CAMERA”,…}
这有什么帮助@因为您可以在固定时间内立即查找该项:
功能['kamras']
,这样效率更高。