通过根据列表B分组生成列表A的子列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过根据列表B分组生成列表A的子列表相关的知识,希望对你有一定的参考价值。

我目前有:

a = [939, 84, 100, 338, 281, 94, 884, 848]
b = ["red", "green", "orange", 'blue']*2
zip_list = zip(a, b)

哪个返回:

[(939, 'red'), (84, 'green'), (100, 'orange'), (338, 'blue'), (281, 'red'), 
(94, 'green'), (884, 'orange'), (838, 'blue')]

我的目标是从这里获得:

   # blue #   # green # # orange #   # red #
[ [338, 838], [84, 94], [100,884], [939, 281] ]

即从列表a派生的新列表,按列表b分组(注意字母顺序)。

b中唯一元素的长度将始终是a长度,例如len(a) == 8len(unique(b)) == 4的一个因素(从数学意义上讲)>>

我目前有:a = [939、84、100、338、281、94、884、848] b = [“红色”,“绿色”,“橙色”,“蓝色”] * 2 zip_list = zip( a,b)返回:[(939,'red'),(84,'green'),(100,'orange'),(338,'...

答案

这是我尝试使用itertools.groupby

另一答案

使用defaultdict是我想要的。您可以在参数中指定defaultdict,以指定密钥的值类型。

以上是关于通过根据列表B分组生成列表A的子列表的主要内容,如果未能解决你的问题,请参考以下文章

片段 A 的列表视图中的片段 B 中的新列表视图,单击 A 的列表项

Python 列表元素分组,比如 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....](列表生成式解决)

根据分隔符拆分列表

无法获取数据,使用包 yfinance 按格式分组下载到熊猫数据框中,仅适用于我的子列表中的特定代码

Stream分组掌握这个你代码可以少些一半了

根据 .dat 文件中的相似文本将行类别分组到列表中