List 展平复杂的元组列表
我有一个元组列表,包含嵌套的元组和列表,如下所示:List 展平复杂的元组列表,list,python-3.x,tuples,List,Python 3.x,Tuples,我有一个元组列表,包含嵌套的元组和列表,如下所示: a= [('Maria', [1, [2, {'teste': (2, 1.0)}]]), ('Lisa ', [2, [4, {'field': (4, 0.75), 'bola': (4, 0.25)}]]), ('John ', [4, [5, {'engine': (5, 0.2), 'wheel': (5, 0.4), 'wheels': (5, 0.2)}]]), ('Tracy ', [4, [6, {'pizza': (
a= [('Maria', [1, [2, {'teste': (2, 1.0)}]]),
('Lisa ', [2, [4, {'field': (4, 0.75), 'bola': (4, 0.25)}]]),
('John ', [4, [5, {'engine': (5, 0.2), 'wheel': (5, 0.4), 'wheels': (5, 0.2)}]]),
('Tracy ', [4, [6, {'pizza': (6, 0.16), 'fish': (6, 0.1), 'animals': (6, 0.1)}]])]
我想将此列表展开为:
a.modified = ('Maria', 1, 2, {'teste': (2, 1.0)}]]),
('Lisa ', 2, 4, {'field': (4, 0.75), 'bola': (4, 0.25)}]]),
('John ', 4, 5, {'engine': (5, 0.2), 'wheel': (5, 0.4), 'wheels': (5, 0.2)}]]),
('Tracy ', 4, 6, {'pizza': (6, 0.16), 'fish': (6, 0.1), 'animals': (6, 0.1}]])])
我尝试过使用以下方法一步一步地进行:
a2=[item for sublist in a for item in sublist]
及
而且:
a2 = list(item for sublist in a for item in sublist)
似乎什么都不管用。我知道这太基本了,但是任何关于如何解决这个问题的提示都会非常有用。谢谢 看来您有一个元组列表和类似链表的结构。无论何时对链表进行操作,都应该考虑递归
def flatten(items):
from itertools import chain
def flatten_link(link):
if isinstance(link, list):
yield link[0]
for item in flatten_link(link[1]):
yield item
elif link is not None:
yield link
return list(tuple(chain(item[:1], flatten_link(item[1]))) for item in items)
a = [
('Maria', [1, [2, {'teste': (2, 1.0)}]]),
('Lisa ', [2, [4, {'field': (4, 0.75), 'bola': (4, 0.25)}]]),
('John ', [4, [5, {'engine': (5, 0.2), 'wheel': (5, 0.4), 'wheels': (5, 0.2)}]]),
('Tracy', [4, [6, {'pizza': (6, 0.16), 'fish': (6, 0.1), 'animals': (6, 0.1)}]]),
]
print(flatten(a))
这将产生:
[
('Maria', 1, 2, {'teste': (2, 1.0)}),
('Lisa ', 2, 4, {'bola': (4, 0.25), 'field': (4, 0.75)}),
('John ', 4, 5, {'engine': (5, 0.2), 'wheel': (5, 0.4), 'wheels': (5, 0.2)}),
('Tracy', 4, 6, {'fish': (6, 0.1), 'animals': (6, 0.1), 'pizza': (6, 0.16)})
]
你能修复代码中的语法错误吗?你所拥有的和你想要的都不是复制的——‘n-可复制的。修复了,谢谢你提醒!?你有被
}
关闭的元组,你有总是无效的{,
等等。直到你能准确地复制你发布的内容并粘贴到一个新的解释器中,它是不固定的。(因此,a.modified
可能也应该是a\u modified
)@DSM不,我所拥有的是嵌套在元组中的字典,这就是{}在那里所做的。这个{'field':(4,0.75),'bola':(4,0.25)}是嵌套元组中的字典。这就是为什么它如此复杂的原因。好悲伤。看看'animals':(6,0.1}]]
--你不关闭以开头的元组(6
和)
。再看看{,'引擎':(5,0.2),[etc]
——那{,
在语法上是无效的。你只需按照我的建议,复制和粘贴你自己的代码,并注意你没有注意到的SyntaxError
,就可以很容易地看出问题所在。如果你不愿意让人们直接帮助你,你会发现愿意帮助你的人会少得多。那谢谢你,杰夫!那完全正确!而且非常聪明!:)
[
('Maria', 1, 2, {'teste': (2, 1.0)}),
('Lisa ', 2, 4, {'bola': (4, 0.25), 'field': (4, 0.75)}),
('John ', 4, 5, {'engine': (5, 0.2), 'wheel': (5, 0.4), 'wheels': (5, 0.2)}),
('Tracy', 4, 6, {'fish': (6, 0.1), 'animals': (6, 0.1), 'pizza': (6, 0.16)})
]