gpt4 book ai didi

python - 正则表达式可以用作字典中的键吗?

转载 作者:太空狗 更新时间:2023-10-29 19:36:36 25 4
gpt4 key购买 nike

我想创建一个字典,其中的键是正则表达式:

d = {'a.*': some_value1, 'b.*': some_value2}

然后,当我查字典时:

d['apple']

我希望 apple 'apple' 与作为正则表达式的键匹配。如果与键/正则表达式完全匹配,则应返回相应的值。

例如'apple'与正则表达式'a.*'完全匹配,所以应该返回some_value1

当然,所有这些都假设正则表达式键不冲突(即两个键不应该都完全匹配同一个字符串)。假设我可以在构建 key 时手动处理此要求。

这在 Python 中可行吗?如果是这样,那将是一个非常优雅和强大的结构!

最佳答案

Python 字典实现为 hash tables - 这意味着通过内部散列 myvalue,任何 mydict[myvalue] 查找都非常快。使用正则表达式作为键将取消此功能。您应该使用一个简单的列表或元组,而不是使用字典,其中每个项目都是格式为的元组:(pattern/compiled regular expression, value) 并扫描它们直到正则表达式通过。这也将使您能够使用正则表达式的顺序(例如,从特定到一般):

import re

LOOKUPS = [
('a.*', 'a'),
('b.*', 'b'),
]

def lookup(s, lookups):
for pattern, value in lookups:
if re.search(pattern, s):
return value
return None

print(lookup("apple", LOOKUPS))

另见 Django 的 url resolver用于(非常)先进地实现您的想法。

关于python - 正则表达式可以用作字典中的键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33343680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com