Python for循环一次访问两个元素

时间:2012-08-01 16:56:30

标签: python for-loop

我在字典的值部分添加名称和项目属性的值:

value+=child.get('name') + '\t' + child.text + '\t' 

每个文本由选项卡分隔。那么当我稍后处理这个值字符串时,我会在选项卡上拆分并使用for循环遍历列表。

如何访问for循环中的名称和值。至于每个属性,我想一次性获取名称和值,并将其写入文件。目前列表如下:

[A,B,A,B,A,B,A,B]

对于每个a,b我想写:

'<'标签名称= a'>' b'<' / tag'>'

3 个答案:

答案 0 :(得分:18)

您可以使用步长2迭代列表,并在每次迭代时获取每个迭代的名称和标记...

for i in range(0,len(list1),2):
    name = list1[i]
    tag = list1[i+1]
    print '<tag name="%s">%s</tag>' % (name, tag)

答案 1 :(得分:4)

编辑:如果您的密钥是唯一的,并且排序无关紧要,那么......

我认为你应该convert your list to a dictionary,然后迭代字典的键:

# assuming you converted your list to a dictionary called values

for k in values:
   print '<tag name="%s">%s</tag>' % (k, values[k])

编辑:如果除了打印结果之外你不需要任何字典,那么发布的另一个答案可能是更好的方法。

答案 2 :(得分:4)

首先,使用string + = string2是一个坏主意,因为每次复制到一个新字符串。

value+=child.get('name') + '\t' + child.text + '\t'

应该是

values = ((child.get('name'),child.text) for child in children)

然后在打印时,只需执行

for name,text in values:
    print '<tag name="{name}">{text}</tag>'.format(name=name,text=text)

如果由于某种原因,你真的想要标签,那么你必须将值构造函数更改为列表(来自生成器)并执行:

''.join((name+'\t'+value+'\t' for name,value in values))[:-1]