我有一个对象数组,每个对象都有一个 suit
属性,我想根据属性值将其分成子数组。目前我正在使用以下代码:
for c in cards:
if c.suit.value == 0:
spades.append(c)
elif c.suit.value == 1:
diamonds.append(c)
elif c.suit.value == 2:
clubs.append(c)
else:
hearts.append(c)
我已经尝试使用itertools.groupby
如下:
suits = [list(g) for g in intertools.groupby(cards, lambda x: x.suit.value)]
但这只是产生了:
[[3, <itertools._grouper object at 0x000000000296B2E8>], ...]
我的第一种方法是有效的,我只是想象有一个简单的Python一行代码可以完成我所需的功能。
groupby
在“爆发”模式下工作。它会为每个黑桃序列创建一个列表。因此,它可以产生[[3,[c1,c2]],[1,[c3],[2,[c4,c5,c6]],[3,[c7]]]
。 - Willem Van Onsem