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
Python 从复杂字典中派生唯一且有序的列表_Python_List_Unique - Fatal编程技术网

Python 从复杂字典中派生唯一且有序的列表

Python 从复杂字典中派生唯一且有序的列表,python,list,unique,Python,List,Unique,我有一个嵌套的元组列表,我需要将其分解成一个列表,并删除每个元组的第一个序号。我似乎不知道如何才能做到这一点 我有以下样本数据: [[('Item 1', <__main__.J object at 0x1018fc690>), ('Item 2', <__main__.J object at 0x1018fc6d0>)]] 像这样的 >>> lis = [[(1, 'a'), (2, 'b')]] zip: >>> zip(*li

我有一个嵌套的元组列表,我需要将其分解成一个列表,并删除每个元组的第一个序号。我似乎不知道如何才能做到这一点

我有以下样本数据:

[[('Item 1', <__main__.J object at 0x1018fc690>), ('Item 2', <__main__.J object at 0x1018fc6d0>)]]
像这样的

>>> lis = [[(1, 'a'), (2, 'b')]]
zip

>>> zip(*lis[0])[1]
('a', 'b')
列表理解:

>>> [y for _, y in lis[0]]
['a', 'b']
像这样的

>>> lis = [[(1, 'a'), (2, 'b')]]
zip

>>> zip(*lis[0])[1]
('a', 'b')
列表理解:

>>> [y for _, y in lis[0]]
['a', 'b']

这就是你要找的

result = [c[1] for b in z for c in b]
print result

这就是你要找的

result = [c[1] for b in z for c in b]
print result

作为@Christian答案的替代方法(该答案没有错),您也可以使用
itertools
将列表展平:

result = [c[1] for c in itertools.chain.from_iterable(z)]

我会选择你认为更容易遵循的结构。两者都假设只有一个嵌套级别—使用递归处理程序可以处理任意深度的嵌套。

作为@Christian答案的替代方法(该答案没有错),您也可以使用
itertools
来展平列表:

result = [c[1] for c in itertools.chain.from_iterable(z)]

我会选择你认为更容易遵循的结构。两者都假设只有一个嵌套级别—使用递归处理程序可以处理任意深度的嵌套。

您的输入列表始终是元组列表,还是任意嵌套?到目前为止,答案是正确的,但是如果嵌套可以任意深的话,它会变得更复杂。是的,嵌套是一个伤害我的问题。Christian的解决方案适用于我的测试用例。您的输入列表始终是元组列表,还是任意嵌套的?到目前为止,答案是正确的,但是如果嵌套可以任意深的话,它会变得更复杂。是的,嵌套是一个伤害我的问题。Christian的解决方案适用于我的测试用例。感谢您的尝试,但这似乎不起作用。使用我提供的样本。打印zip(*z)[1]产生[('Item 2',)]OP在第一个列表中有另一个列表:P@Baywatch啊!!我没有注意到您有一个嵌套列表,请尝试:
zip(*lis[0])[1]
谢谢您的尝试,但这似乎不起作用。使用我提供的样本。打印zip(*z)[1]产生[('Item 2',)]OP在第一个列表中有另一个列表:P@Baywatch啊!!我没有注意到您有一个嵌套列表,请尝试:
zip(*lis[0])[1]
递归处理程序听起来很有趣。我必须检查一下。如果你进入这个设计,这个答案看起来是一个不错的开始:-除了你必须稍微调整一下它,因为你的最低层元素是元组,它是可编辑的。这确实非常有用。谢谢,听起来很有趣。我必须检查一下。如果你进入这个设计,这个答案看起来是一个不错的开始:-除了你必须稍微调整一下它,因为你的最低层元素是元组,它是可编辑的。这确实非常有用。非常感谢。