Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Python字典语法从2.7转换为2.6?_Python_Python 2.7_Dictionary_Python 2.x_Python 2.6 - Fatal编程技术网

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

如何将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]

我正在尝试从安装了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] 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上创建一个无意义的临时
列表。