假设我有一本字典:

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/

10-10 06:12