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中有一个
当然,你可以这样做:
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" " |