gpt4 book ai didi

python - 在 Python 中随机排列子列表组

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:02 25 4
gpt4 key购买 nike

我想打乱这个列表:

[[1, 'A'], [2, 'A'], [6, 'B'], [3, 'B'], [4, 'C'], [5, 'C'], [7, 'F']]

但我需要由子列表的第二个元素标识的组保持在一起,以便打乱后的列表看起来像这样:

[[6, 'B'], [3, 'B'], [7, 'F'], [1, 'A'], [2, 'A'], [4, 'C'], [5, 'C']]

所有“B”、“F”、“A”和“C”子列表都在一起。

我猜测结合使用 shuffle 和 groupby 可以解决问题,但我不知道从哪里开始。任何想法将不胜感激!

最佳答案

items = [[1, 'A'], [2, 'A'], [6, 'B'], [3, 'B'], [4, 'C'], [5, 'C'], [7, 'F']]

import itertools, operator, random

groups = [list(g) for _, g in itertools.groupby(items, operator.itemgetter(1))]
random.shuffle(groups)
shuffled = [item for group in groups for item in group]

print(shuffled)

打印例如:

[[4, 'C'], [5, 'C'], [1, 'A'], [2, 'A'], [7, 'F'], [6, 'B'], [3, 'B']]

关于python - 在 Python 中随机排列子列表组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35214352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com