Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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_Dictionary_For Loop_Matrix - Fatal编程技术网

Python 如何按索引顺序展平列表矩阵(列表列表)?

Python 如何按索引顺序展平列表矩阵(列表列表)?,python,list,dictionary,for-loop,matrix,Python,List,Dictionary,For Loop,Matrix,给我: list_data = [['a', 'b', 'c', 'd'], ['hello', 'mellow', 'fellow', 'jello'], [2, 3, 6, 8]] flattened = [] for data in list_data: for x in data: flattened.append(x) print(flatenned) 我该如何用最简单的方法将此lits展平到(下方): ['a', 'b

给我:

list_data = [['a', 'b', 'c', 'd'],
         ['hello', 'mellow', 'fellow', 'jello'],
         [2, 3, 6, 8]]

flattened = []
for data in list_data:
    for x in data:
        flattened.append(x)

print(flatenned)
我该如何用最简单的方法将此lits展平到(下方):

['a', 'b', 'c', 'd', 'hello', 'mellow', 'fellow', 'jello', 2, 3, 6, 8]
到字典

['a', 'hello', 2, 'b', 'mellow', 3,  'c', 'fellow', 6, 'd', 'jello', 8]

对过程的解释会很有帮助。

您可以使用
zip
转换矩阵:

['a': ['hello' 2], 'b': ['mellow', 3], 'c': ['fellow', 6], 'd': ['jello', 8]]

要获取词典,请执行以下操作:

[y for x in zip(*list_data) for y in x]
# ['a', 'hello', 2, 'b', 'mellow', 3, 'c', 'fellow', 6, 'd', 'jello', 8]
说明:

['a', 'b', 'c', 'd', 'hello', 'mellow', 'fellow', 'jello', 2, 3, 6, 8]
字典报告为键和值,
d[k,v]


因此,第一部分
列表数据[0]
从每个列表的第一个索引(0)中选择键,第二部分
zip(*list\u data[1:])
添加列表的剩余元素作为该键的值,用于展平列表,您可以使用as:

要将值映射到所需的
dict
,您可以使用字典理解表达式:

>>> from itertools import chain

>>> list(chain(*zip(*list_data)))
['a', 'hello', 2, 'b', 'mellow', 3, 'c', 'fellow', 6, 'd', 'jello', 8]

我刚给字典加了一些说明。我只是想澄清一下。编辑看起来不错。只是键不包括
zip
,第一个
zip
用于将键和值组合成对。我对你的描述做了一点修改。我只是想澄清一下为什么这篇文章中有一个简单的括号。值周围的括号表示它是一个元组而不是列表,在大多数情况下,它不应该影响结果。但是你可以通过
{k:list(v)for k,v in my_dict.items()}
将它们转换为list,假设
my_dict
是你得到的字典.Psidom-你能就我面临的问题给我一点指导吗。我想使用groupby为pandas数据帧运行一个
applymap函数。我认为这个问题类似于在dict中使用一个唯一的键,但是我想使用dataframe,因为真实的数据将是巨大的。谢谢
>>> {i: [j, k] for i, j, k in zip(*list_data)}
{'a': ['hello', 2], 'c': ['fellow', 6], 'b': ['mellow', 3], 'd': ['jello', 8]}