如何将正则表达式用作字典中的键,以及如何使用它进行访问?

时间:2017-04-09 08:15:54

标签: python regex dictionary tuples

我有一个以元组为键的字典。元组内部是一个数字和正则表达式。作为键的元组对应于任何值。我想使用元组(即正则表达式)作为键来访问该值。例如,

import re

t_dict = dict()
t[(1, r"[0-9]+")] = "Hello world!"
t[(2, r"[a-z]+")] = "Hi!"

我是否正确地将正则表达式放在上面?如果没有,你如何在其上加上正则表达式?

接下来我想使用键获取字典中的值。例如,我想这样做。

print t[(1, '99')] # this should print "Hello world!"
print t[(2, 'hey')] # this should print "Hi!"

1 个答案:

答案 0 :(得分:1)

要执行您想要的操作,您可以对内置字典进行子类化,然后覆盖它的TextBlock方法以获得所需的查找类型。

这种方法的问题是你将无法重现实际字典的<TextBlock> <Run Text="Sententce1" Foreground="Blue" FontSize="36" /> <LineBreak/><Run Text="{Binding Sentence1}" Foreground="Red" FontSize="22" FontStyle="Italic"/> <LineBreak/><Run Text="{Binding Sentence2}" Foreground="Blue" FontSize="36"/> <LineBreak/><Run Text="{Binding Sentence3}" Foreground="Green" FontSize="36" FontWeight="DemiBold"/> </TextBlock> 查找,因为Python的内置哈希函数不能理解正则表达式(我不知道任何哈希值一样)。

没有简单的方法可以使用__getitem__(常量时间)反向查找来查找哪个正则表达式与字符串匹配。除非你真的尝试过,否则你无法知道正则表达式是否与字符串匹配。