Python 脚本,用于在具有重复的子组之间公平划分大型列表

Python 脚本,用于在具有重复的子组之间公平划分大型列表,python,bash,algorithm,sorting,grouping,Python,Bash,Algorithm,Sorting,Grouping,假设我有一张26封信的清单{A,B,C,…Z}如何为每个“主”字母等效分配五个字母(比如工人字母) 因此,每个工人的信件应该重复五次。工人信函不应多次分配给同一主字母。理想情况下,不应将工作字母分配给其等效的主字母 如何使用python或bash实现这一点?导入字符串 随机输入 def获取工人字母(主字母、工人数量): #使用string.partition获取除主字母以外的所有字母 分区=字符串。ascii字母小写。分区(主字母) #使用random.sample选择工作字母 返回random

假设我有一张26封信的清单<代码>{A,B,C,…Z}如何为每个“主”字母等效分配五个字母(比如工人字母)

因此,每个工人的信件应该重复五次。工人信函不应多次分配给同一主字母。理想情况下,不应将工作字母分配给其等效的主字母

如何使用python或bash实现这一点?

导入字符串
随机输入
def获取工人字母(主字母、工人数量):
#使用string.partition获取除主字母以外的所有字母
分区=字符串。ascii字母小写。分区(主字母)
#使用random.sample选择工作字母
返回random.sample(分区[0]+分区[2],工作者数)
>>>{主字母:获取工人字母(主字母,5)
用于string.ascii\u小写格式的主字母}
{'a':['d','f','g','j','p'],
'b':['y','u','f','g','v'],
‘c’:[v’、‘e’、‘r’、‘g’、‘f’],
‘d’:[‘q’、‘j’、‘e’、‘t’、‘z’],
‘e’:[z’、‘r’、‘f’、‘j’、‘b’],
‘f’:[v’、‘o’、‘n’、‘b’、‘t’],
‘g’:[‘d’、‘y’、‘q’、‘h’、‘w’],
‘h’:[z’、‘u’、‘j’、‘i’、‘c’],
‘i’:[v’、‘r’、‘m’、‘c’、‘f’],
‘j’:[f’、‘y’、‘m’、‘o’、‘x’],
'k':['r','g','w','p','h'],
'l':['e','t','v','z','j'],
'm':['j','e','h','u','a'],
'n':['o','u','g','e','s'],
‘o’:[‘p’、‘f’、‘a’、‘c’、‘x’],
'p':['d','q','e','m','x'],
‘q’:[‘p’、‘t’、‘g’、‘w’、‘i’],
'r':['e','g','s','a','y'],
's':['z','u','j','v','o'],
‘t’:[‘i’、‘w’、‘f’、‘h’、‘m’],
‘u’:[k’、‘h’、‘f’、‘z’、‘q’],
“v”:[“e”、“j”、“d”、“r”、“i”],
‘w’:[‘c’、‘p’、‘z’、‘s’、‘t’],
'x':['z','w','v','m','k'],
‘y’:[k’、‘i’、‘t’、‘c’、‘j’],
'z':['o','a','v','j','r']}

此bash解决方案可能陷入无限循环,无法保证:

字母=({A..Z})
#生成26个由5个空格分隔的字母组成的字符串,其中
#没有字符串包含重复的字母
声明-tmp
虽然真实;做

mapfile-t rand<您搜索了什么,找到了什么?您尝试过什么,失败的原因是什么?我搜索过分组分割算法,但没有找到任何需要在子组中重复对象的算法。请将您想要的输出(无描述)添加到您的问题(无评论)中。我不确定是否理解正确。这项任务似乎太简单了。如果您有26个主A-Z和26*5个工人(5*A-Z),那么为什么不分配A=BCDEF,B=CDEFG,…,Z=ABCDE?为此,您不需要任何分组算法或类似的花哨东西。两个嵌套循环就可以了。赋值必须是随机的。这很有帮助,但是有没有办法使子列表保持平衡?例如,“a”与“b”出现的次数与工人字母等相同。
A: P, L, X, R, E
B: C, A, I, N, S
...
Z: E, D, R, L, T