如何将Python字典语法从2.7转换为2.6?
我正在尝试从安装了Python 2.6的Jenkins运行我的脚本。我的脚本最初是在使用2.7.5的Linux机器上编写的。每当我从本地计算机运行脚本时,它都可以正常工作,但当我尝试从Jenkins运行脚本时,它会抛出以下代码的语法错误:如何将Python字典语法从2.7转换为2.6?,python,python-2.7,dictionary,python-2.x,python-2.6,Python,Python 2.7,Dictionary,Python 2.x,Python 2.6,我正在尝试从安装了Python 2.6的Jenkins运行我的脚本。我的脚本最初是在使用2.7.5的Linux机器上编写的。每当我从本地计算机运行脚本时,它都可以正常工作,但当我尝试从Jenkins运行脚本时,它会抛出以下代码的语法错误: rpmDict = {rpmList[i]: rpmList_full[i] for i in range (len(rpmList))} rpmDataDict = {rpmDataTextList[i]: rpmDataTextList_full[i]
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)))
只需使用
dict
构造函数并向其传递元组的生成器表达式:
rpmDict = dict((rpmList[i], rpmList_full[i]) for i in range(len(rpmlist)))
因此,在这两个版本中,这完全是过度设计的
rpmDict = {rpmList[i]: rpmList_full[i] for i in range (len(rpmList))}
应该是:
rpmDict = dict(zip(rpmList, rpmList_full))
rpmDataDict = dict(zip(rpmDataTextList, rpmDataTextList_full))
以及:
应该是:
rpmDict = dict(zip(rpmList, rpmList_full))
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。在任何情况下,在Python 2中,请使用:
from future_builtins import zip
因此,zip
创建了一个迭代器,而不是一个列表,这更有效,特别是对于更大的数据。因此,在这两个版本中,这完全是过度设计的
rpmDict = {rpmList[i]: rpmList_full[i] for i in range (len(rpmList))}
应该是:
rpmDict = dict(zip(rpmList, rpmList_full))
rpmDataDict = dict(zip(rpmDataTextList, rpmDataTextList_full))
以及:
应该是:
rpmDict = dict(zip(rpmList, rpmList_full))
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。在任何情况下,在Python 2中,请使用:
from future_builtins import zip
因此,
zip
创建了一个迭代器,而不是一个列表,它更有效,特别是对于更大的数据。即将发布相同的基本答案(只需中间步骤zip
+genexpr),取而代之的是您的。我只想指出的是,from future\u builtins import zip
避免在Python 2上创建一个毫无意义的临时列表。我正要发布相同的基本答案(只需中间步骤zip
+genexpr),取而代之的是你的。我只想指出的是,from future\u builtins import zip
避免在Python 2上创建一个无意义的临时列表。