任何人都有一些带有一些有趣的键的典范字典(除了规范的字符串或整数),以及如何在程序中使用它们?

我了解我们需要的所有 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,等等。

10-08 17:02