2011-06-08 75 views
0
url_params = {} 
for i in t: 
    try: 
     url_params[i] = t.next() 
    except: 
     url_params[i] = None 

因为这对我来说看起来很愚蠢。我通过配对相邻元素将列表转换为字典。然而,有些情况下,我不会总是有一对。拖尾元素仍然很重要,但它的价值并不重要。有没有更好的方法来为next指定一个默认值

回答

4

这更容易这样做:

from itertools import izip_longest 
url_params = dict(izip_longest(*[iter(t)] * 2)) 

示例:t = range(11),这将产生

{0: 1, 2: 3, 4: 5, 6: 7, 8: 9, 10: None} 
+0

此获胜。谢谢你一百万。我早先使用这个错误,并感到沮丧。 – Matt 2011-06-09 00:11:35

1

也可以工作:

>>> dict(zip(t[::2], t[1::2]+[None])) 
{0: 1, 2: 3, 4: 5, 6: 7, 8: 9, 10: None} 
相关问题