如何将 Python 字典语法从 2.7 转换为 2.6?

How to convert Python dictionary syntax from 2.7 to 2.6?

我正在尝试 运行 我的 Jenkins 脚本,它安装了 Python 2.6。我的脚本最初是在使用 2.7.5 的 Linux 机器上编写的。每当我从我的本地机器 运行 脚本时它工作正常,但是当我尝试从 Jenkins 运行 它时,它会抛出以下代码的语法错误:

rpmDict = {rpmList[i]: rpmList_full[i] for i in range (len(rpmList))}

rpmDataDict = {rpmDataTextList[i]: rpmDataTextList_full[i] for i in range (len(rpmDataTextList))}

谁能帮我把这个翻译成 2.6 语法?

只需使用 dict 构造函数并将元组的生成器表达式传递给它:

rpmDict = dict((rpmList[i], rpmList_full[i]) for i in range(len(rpmlist)))

所以,在两个版本中,这完全是over-engineered。

rpmDict = {rpmList[i]: rpmList_full[i] for i in range (len(rpmList))}

应该是:

rpmDict = dict(zip(rpmList, rpmList_full))

并且:

rpmDataDict = {rpmDataTextList[i]: rpmDataTextList_full[i] for i in range (len(rpmDataTextList))}

应该是:

rpmDataDict = dict(zip(rpmDataTextList, rpmDataTextList_full))

但是正如另一个答案所指出的,在 Python2.6,

{expression0: expression1 for whatever in some_iterable}

可以转换成

dict((expression0, expression1) for whatever in some_iterable)

另请注意,您确实应该尽可能多地使用 Python 3。无论如何,在Python2中,使用:

from future_builtins import zip

这样zip创建一个迭代器,而不是一个列表,这样效率更高,尤其是对于较大的数据。