繁体   English   中英

将嵌套列表的dict转换为元组列表

[英]Convert dict of nested lists to list of tuples

我有嵌套listdict

d = {'a': [[('a1', 1, 1), ('a2', 1, 2)]], 'b': [[('b1', 2, 1), ('b2', 2, 2)]]}
print (d)
{'b': [[('b1', 2, 1), ('b2', 2, 2)]], 'a': [[('a1', 1, 1), ('a2', 1, 2)]]}

我需要创建tuplelist ,如:

[('b', 'b1', 2, 1), ('b', 'b2', 2, 2), ('a', 'a1', 1, 1), ('a', 'a2', 1, 2)]

我试过了:

a = [[(k, *y) for y in v[0]] for k,v in d.items()]
a = [item for sublist in a for item in sublist]

我认为我的解决方案有点过于复杂。 是否有一些更好,更pythonic,也许一线解决方案?

你几乎在那里:

[(k, *t) for k, v in d.items() for t in v[0]]

需要v[0] ,因为您的值只是包含另一个列表的单元素列表。 如果您想弄清楚它的作用,可以将上面的内容扩展为以下嵌套for循环:

for key, value in d.items():   # value is [[(...), (...), ...]]
    for tup in value[0]:  # each (...) from value[0]
        (key, *tup)  # produce a new tuple

演示:

>>> d = {'a': [[('a1', 1, 1), ('a2', 1, 2)]], 'b': [[('b1', 2, 1), ('b2', 2, 2)]]}
>>> [(k, *t) for k, v in d.items() for t in v[0]]
[('a', 'a1', 1, 1), ('a', 'a2', 1, 2), ('b', 'b1', 2, 1), ('b', 'b2', 2, 2)]

暂无
暂无

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

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