通过根据列表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) == 8
和len(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]....](列表生成式解决)