Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 展平复杂的元组列表_List_Python 3.x_Tuples - Fatal编程技术网

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