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

2024-04-29 01:15:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本这样的字典:

features = {"CAMERA": ['cam', 'Cam', 'camera', 'cameras', 'kameras', 'kamras'], "BATTERY": ['batterie', 'battery']}

我想检查这些值中是否存在某个值。如果是,我想归还钥匙。我怎样才能做到

例如:

如果“因果报应”在特征中,我想获得钥匙“照相机”


Tags: 字典特征camera钥匙featurescambatterycameras
1条回答
网友
1楼 · 发布于 2024-04-29 01:15:34

正如在其他答案中提到的,可以通过在features上循环并检查所需字符串是否在任何列表中来解决您的问题。例如:

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",)

或者,如果需要单个键,get_keys(features, 'kamras')[0]

但是,如果您要经常这样做,最好在创建新的inverteddict之前反转字典:

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"

相关问题 更多 >