如何将 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
创建一个迭代器,而不是一个列表,这样效率更高,尤其是对于较大的数据。
我正在尝试 运行 我的 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
创建一个迭代器,而不是一个列表,这样效率更高,尤其是对于较大的数据。