首页 > 解决方案 > 如何编写检查给定字符串是否在值中并返回键的python函数

问题描述

我正在尝试清理数据并尝试实施字典。

States = {'DC':['WashingtonDC','washingtonDC','D C'],'NC':['NorthCarolina', 'North Carolina',   'N C']}

有没有办法编写将状态作为参数并从状态返回键的python函数。例如 checkstates('WashingtonDC') 返回 'DC,因为它在它的值中。

标签: pythondictionarykey

解决方案


最简单的是:

def checkstates(variant):
    return next(k for k in States if variant in States[k])

如果迭代器为空(没有状态匹配),您可以为 提供默认值next

    return next((k for k in States if variant in States[k]), "Not found!")

如果你要重复使用这个函数,创建一个辅助数据结构来进行查找是有意义的O(1)

reverse_states = {v_inner: k for k, v in States.items() for v_inner in v}

def checkstates(variant):
    return reverse_states.get(variant, "Not found!")

推荐阅读