任何人都有一些带有一些有趣的键的典范字典(除了规范的字符串或整数),以及如何在程序中使用它们?
我了解我们需要的所有 key 都是hashable
,这意味着它必须是不可变的并且具有可比性(具有__eq__()
或__cmp__()
方法)。
一个相关的问题是:如何快速,巧妙地定义一个新的hashable
?
最佳答案
让我们去做一些更深奥的事情。假设您要执行一个函数列表并存储每个函数的结果。对于每个引发异常的函数,您都希望记录该异常,并且还希望对每种异常被引发的次数进行计数。函数和异常可用作dict
键,因此很容易:
funclist = [foo, bar, baz, quux]
results = {}
badfuncs = {}
errorcount = {}
for f in funclist:
try:
results[f] = f()
except Exception as e:
badfuncs[f] = e
errorcount[type(e)] = errorcount[type(e)] + 1 if type(e) in errorcount else 1
现在,您可以执行
if foo in badfuncs
来测试该函数是否引发了异常(或者可以通过if foo in results
来查看其是否正常运行),或者通过if ValueError in errorcount
来查看是否有任何函数引发了ValueError
,等等。