python unpacked list of list

时间:2014-10-06 17:34:40

标签: python dictionary list-comprehension

d = {
  'a': [1, 2, 3],
  'b': [4, 5, 6]
}

def magic_fun(d): 
  ??

magic_fun(d) -> 
[[('a', 1), ('a', 2), ('a', 3)],
 [('b', 4), ('b', 5), ('b', 6)]]

替换?用python单线列表comprenhension。 它可行吗?

如果我这样做:

>>> [(key, value) for key, values in d.iteritems() for value in values]
[('a', 1), ('a', 2), ('a', 3), ('b', 4), ('b', 5), ('b', 6)]

但是我放弃了第一级列表。一切都被夷为平地......

PS:它对我来说并不是真的有用,我可以用for循环来做,但我很惊讶我找不到用列表理解来做到这一点的方法......

1 个答案:

答案 0 :(得分:4)

def magic_fun(d):
    return [[(key,el) for el in value] for key,value in d.items()]
    # for key,value in d.items():
    #     element_list = []
    #     for el in value:
    #         element_list.append((key,el))
    #     yield element_list