简体   繁体   English

python列表解压字典

[英]python unpacked dictionary of list

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

Replace ?? 替换?? with a python one-liner list comprenhension. 使用python一线清单理解。 Is it doable ? 可行吗?

If I do this: 如果我这样做:

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

But I loose the first level of list. 但是我松开了第一级清单。 Everything is flattened... 一切都变平了...

PS: It is not really useful to me, I could do with a for-loop, but I am suprised I can't find a way to do it with a list-comprehension... PS:这对我来说并不是真正有用,我可以使用for循环,但是我很惊讶我找不到一种使用列表理解的方法。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM