什么是将两个序列组合成字典的Pythonic方法?

时间:2009-02-23 23:33:26

标签: python

在Python中有更简洁的方法吗?:

def toDict(keys, values):
  d = dict()
  for k,v in zip(keys, values):
    d[k] = v

  return d

2 个答案:

答案 0 :(得分:42)

是:

dict(zip(keys,values))

答案 1 :(得分:4)

如果keys'的大小可能大于values',那么您可以使用itertools.izip_longest(Python 2.6),它允许为其余键指定默认值:< / p>

from itertools import izip_longest

def to_dict(keys, values, default=None):
    return dict(izip_longest(keys, values, fillvalue=default))

示例:

>>> to_dict("abcdef", range(3), 10)
{'a': 0, 'c': 2, 'b': 1, 'e': 10, 'd': 10, 'f': 10}

注意:itertools.izip*()函数不像zip()函数返回迭代器而不是列表。