python - 字典键中的通配符

标签 python python-3.x dictionary wildcard glob

假设我有一本字典:

rank_dict = {'V*': 1, 'A*': 2, 'V': 3,'A': 4}

如您所见,我在一个 V 的末尾添加了一个 *。虽然 3 可能只是 V 的值,但我想要 V1、V2、V2234432 等的另一个键...我想检查一下它反对:

checker = 'V30'

并获取值。正确的语法是什么?

for k, v in rank_dict.items():
    if checker == k:
        print(v)

最佳答案

您可以使用 fnmatch.fnmatch匹配 Unix shell 风格的通配符:

>>> import fnmatch
>>> fnmatch.fnmatch('V34', 'V*')
True

>>> rank_dict = {'V*': 1, 'A*': 2, 'V': 3,'A': 4}
>>> checker = 'V30'
>>> for k, v in rank_dict.items():
...     if fnmatch.fnmatch(checker, k):
...         print(v)
... 
1

注意:每次查找的时间复杂度为 O(n)。这可能成为大型词典的问题。仅当查找性能不是问题时才推荐。

关于python - 字典键中的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52656701/

相关文章:

python - 使用 Python 进行 base64 解码,附件通过基于 REST 的 Gmail API 下载

python - 将括号分隔的字符串拆分为字典

python - 无法使用 pop 重命名 Python 字典键值 - 错误?

python - Snakemake 在配置中声明临时文件

python - 使用迭代变量检查字典键的值?

dictionary - Groovy:在 map 列表中按键查找/返回 map 的值

python - 如何将实时音频 url 传递给 Google Speech to Text API

python - vim:符号查找错误:/lib/x86_64-linux-gnu/libpython3.8.so.1.0: undefined symbol :XML_SetHashSalt

python - 将连续映射到连续的强化学习方法

python - 内置模块的内容如何在不导入 Python 的情况下在全局命名空间中可用?