Python 关联2个列表
我正在用一些运行在字符串上的Python 关联2个列表,python,list,Python,List,我正在用一些运行在字符串上的re.findall创建两个列表 jobids = re.findall(r'R=(\d+)', (str(key['Job Dependencies']))) jobdeps = re.findall(r'J=(\d+)', (str(key['Job Dependencies']))) 这两者都创建了一个如下列表: ['14866152', '0', '0', '14866149', '0', '14866156'] ['75205', '52336', '75
re.findall
创建两个列表
jobids = re.findall(r'R=(\d+)', (str(key['Job Dependencies'])))
jobdeps = re.findall(r'J=(\d+)', (str(key['Job Dependencies'])))
这两者都创建了一个如下列表:
['14866152', '0', '0', '14866149', '0', '14866156']
['75205', '52336', '75208', '75207', '75197', '75200']
在上述情况下,列表将始终具有相同数量的元素,即6
我要做的是扫描第一个列表,如果它是0
,我希望第二个列表中的数字具有相同的值
我想我需要做一些事情,比如:
for key in jobids:
if key == '0':
print jobdeps
但这会返回整个列表,我不想要它。在上面的例子中,我想要3个单独的返回值,分别是'52336'
,'75208'
和'75197'
试试这个
for index, key in enumerate(jobids):
if key == '0':
print jobdeps[index]
试试这个
for index, key in enumerate(jobids):
if key == '0':
print jobdeps[index]
您可以使用列表理解:
>>> [jobdeps[i] for i,j in enumerate(jobids) if j=='0']
['52336', '75208', '75197']
您可以使用列表理解:
>>> [jobdeps[i] for i,j in enumerate(jobids) if j=='0']
['52336', '75208', '75197']
zip()
是你的朋友:
for key, val in zip(jobids, jobdeps):
if key == '0':
print val
zip()
是你的朋友:
for key, val in zip(jobids, jobdeps):
if key == '0':
print val
您可以使用和:
您可以使用和:
您必须检查与键对应的索引,在您的情况下,您将打印出整个数组 这对你应该有帮助
您必须检查与键对应的索引,在您的情况下,您将打印出整个数组 这对你应该有帮助
“zip”功能在这里很方便
for jobid, jobdep in zip(jobids, jobdeps):
if jobid == '0':
print jobdep
您也可以尝试使用enumerate(),例如
“zip”功能在这里很方便
for jobid, jobdep in zip(jobids, jobdeps):
if jobid == '0':
print jobdep
您也可以尝试使用enumerate(),例如
我们两个都写了完全相同答案的尴尬时刻xD我们两个都写了完全相同答案的尴尬时刻xD