在python for循环中使用1个以上的iterable

Use more than 1 iterable in a python for loop

本问题已经有最佳答案,请猛点这里访问。

我想用如下两个iterables调用一个python for循环:

1
2
3
4
5
6
TEMPLATE_FILE = { 'a': 'power', 'b': 'voltage', 'c': 'current' }
for (script in TEMPLATE_FILE.values()) and (files in TEMPLATE_FILE.keys()):
    print 'script: ',script
    print 'files: ',files
    print"
"

但这是一个语法错误,我该怎么做呢?


1
2
 for files,script in TEMPLATE_FILE.items():
    print(files,scripts)

是你要找的建筑。

(在python 2中有一个iteritems,它在python 3中被删除,因此对于小型字典来说,items是可以移植的)

当然,你可以这样做:

1
2
for files in TEMPLATE_FILE:
    scripts = TEMPLATE_FILE[files]

但这不如在每次迭代时对键进行散列那么有效,而不使用散列就可以获得值。为随机访问情况保留哈希。

请注意,您可以像这样迭代排序键(常见问题):

1
2
 for files,script in sorted(TEMPLATE_FILE.items()):
    print(files,scripts)


要访问键,可以这样做。

对于Python 2 .x:

1
for files,script in TEMPLATE_FILE.iteritems():

对于Python 3 .x:

1
for files,script in TEMPLATE_FILE.items():

或者,您也可以独立于Python版本执行此操作:

1
2
3
for files in TEMPLATE_FILE:
    script = TEMPLATE_FILE[files]
    #print(files, script)

最后一位的缺点是,按照@jean fran的建议,每次重新散列键。奥斯法布雷


您只需要迭代一个字典,并在每次迭代时获取键及其值。

1
2
for file_ in TEMPLATE_FILE:
    script = TEMPLATE_FILE[file_]

1
2
for file_, script in TEMPLATE_FILE.items():
    ...

你不需要这样编码。下面的代码是您想要的

1
2
3
4
5
6
TEMPLATE_FILE = { 'a': 'power', 'b': 'voltage', 'c': 'current' }
for script in TEMPLATE_FILE:
    print 'script: ',script
    print 'files: ',TEMPLATE_FILE[script ]
    print"
"