python解压缩列表字典

问题描述:

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)]] 

替换??与蟒蛇单线列表comprenhension。 它可行吗?python解压缩列表字典

如果我这样做:

>>> [(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循环做,但我很惊讶,我找不到一种方法来用list-comprehension来做。

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 
+1

先生,这的确是对的。 – 2014-10-06 17:50:24