Python 2.7之前的字典推导式替代方案

34

如何使下列功能兼容Python 2.7之前的版本?

gwfuncs = [reboot, flush_macs, flush_cache, new_gw, revert_gw, send_log]      
gw_func_dict = {chr(2**i): func for i, func in enumerate(gwfuncs[:8])}
1个回答

67

使用:

gw_func_dict = dict((chr(2**i), func) for i, func in enumerate(gwfuncs[:8]))
那是使用生成器表达式产生(key, value)对的dict()函数。或者泛化地说,可以使用以下形式的字典推导式:
{key_expr: value_expr for targets in iterable <additional loops or if expressions>}

通过使用以下方法,始终可以使其与 Python < 2.7 兼容:

dict((key_expr, value_expr) for targets in iterable <additional loops or if expressions>)

我猜第二个版本兼容Python<2.7和Python>=2.7?如果不是的话,我通常会尝试获取两者的强大版本,但我不认为我能捕获语法错误。 - Kvothe
@Kvothe 这个答案中的语法是向前兼容的,适用于Python 2.4及更高版本(包括所有Python 3.x版本)。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接