rank vote url
57 386 107 665 url

字典推导式

我喜欢列表推导式的语法.

它能不能用来创建字典?这样:

  1. mydict = {(k,v) for (k,v) in blah blah blah} # doesn't work :(

在Python2.6或更早的版本,字典生成器可以接受迭代的键/值对:

  1. d = dict((key, value) for (key, value) in iterable)

从Python2.7或者3以后,你可以直接用字典推导式语法:

  1. d = {key: value for (key, value) in iterable}

当然,你可以用任何方式的迭代器(元组,列表,生成器..),只要可迭代对象的元素中有两个值.

  1. d = {value: foo(value) for value in sequence if bar(value)}
  2. def key_value_gen(k):
  3. yield chr(k+65)
  4. yield chr((k+13)%26+65)
  5. d = dict(map(key_value_gen, range(26)))