首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关联2个列表

关联2个列表
EN

Stack Overflow用户
提问于 2014-12-08 15:33:51
回答 6查看 51关注 0票数 1

我正在从运行在字符串上的一些re.findall中创建2个列表。

代码语言:javascript
复制
jobids = re.findall(r'R=(\d+)', (str(key['Job Dependencies'])))
jobdeps = re.findall(r'J=(\d+)', (str(key['Job Dependencies'])))

这两种方法都创建了如下列表:

代码语言:javascript
复制
['14866152', '0', '0', '14866149', '0', '14866156']
['75205', '52336', '75208', '75207', '75197', '75200']

在上面的例子中,列表总是有相同数量的元素,即6

我要做的是扫描第一个列表,如果它是一个0,我想要从第二个列表中的数字在相同的值。

我猜我需要做的事情是:

代码语言:javascript
复制
for key in jobids:
    if key == '0':
        print jobdeps

但那会把整个名单还给我,我不想要。我希望在上面的示例中分别返回'52336''75208''75197'

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-12-08 15:35:40

zip()是你的朋友:

代码语言:javascript
复制
for key, val in zip(jobids, jobdeps):
    if key == '0':
        print val
票数 5
EN

Stack Overflow用户

发布于 2014-12-08 15:35:24

尝尝这个

代码语言:javascript
复制
for index, key in enumerate(jobids):
    if key == '0':
        print jobdeps[index]
票数 3
EN

Stack Overflow用户

发布于 2014-12-08 15:35:50

您可以使用列表理解zip

代码语言:javascript
复制
>>> jobids = ['14866152', '0', '0', '14866149', '0', '14866156']
>>> jobdeps = ['75205', '52336', '75208', '75207', '75197', '75200']
>>> [y for x, y in zip(jobids, jobdeps) if x == '0']
['52336', '75208', '75197']
>>>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27361330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档