将嵌套列表的字典转换为元组列表 [英] Convert dict of nested lists to list of tuples
本文介绍了将嵌套列表的字典转换为元组列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有dict
个嵌套的list
s:
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)]]}
我需要创建tuple
的list
,例如:
[('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]
我认为我的解决方案有些复杂.是否有一些更好,更Python化的解决方案,也许是一种解决方案?
I think my solution is a bit over-complicated. Is there some better, more pythonic, maybe one line solution?
推荐答案
您快到了:
[(k, *t) for k, v in d.items() for t in v[0]]
v[0]
是必需的,因为您的值只是单元素列表,其中包含另一个列表.如果您想弄清楚上面的内容,可以将上面的内容扩展为以下嵌套的for
循环:
The v[0]
is needed because your values are just single-element lists with another list contained. The above can be expanded to the following nested for
loops, if you wanted to figure out what it does:
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)]
这篇关于将嵌套列表的字典转换为元组列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文