首页 > 解决方案 > Python在列表中的字典中查找值

问题描述

我正在尝试True使用values()for 方法返回480-888-0050,该方法位于contacts字典内的列表中,但它似乎没有深入到 key 的列表中Mike

contacts = {
    'Ingemar': '480-555-7777', 
    'Mike': ['480-888-0050', '480-555-5555']
}

print('480-555-7777' in contacts.values())
print('480-888-0050' in contacts.values())

print(contacts.values())

输出:

True
False
dict_values(['480-555-7777', ['480-888-0050', '480-555-5555']])  <<< clearly sees the values

进程以退出代码 0 结束

有人可以帮我弄这个吗?

标签: python

解决方案


您可以编写一个尝试以str不同方式处理的函数list

def contains(element, value):
    if isinstance(value, str):
        return element == value
    elif isinstance(value, list):
        return element in value
    return False

然后你可以在生成器表达式中使用这个函数any

>>> any(contains('480-555-7777', value) for value in contacts.values())
True
>>> any(contains('480-888-0050', value) for value in contacts.values())
True

推荐阅读